(57)【特許請求の範囲】
【請求項１】
ランダムアクセス可能で、書換え回数に上限があり、物理アドレス空間へのアクセスが仮想アドレスを介して行われる不揮発性メモリと、
上記不揮発性メモリの物理アドレス空間をページ単位で管理し、物理アドレス空間と仮想アドレス空間をマッピングした情報をテーブルとして保持し、そのテーブルを使用してアクセスのあった仮想アドレスを物理アドレスに変換する機能を含む仮想メモリ制御部と、を有し、
上記仮想メモリ制御部は、
書換えが発生する仮想ページに割り当てる物理メモリ容量を拡張する機能を含み、
物理アドレスと仮想アドレスをページ単位ごとにマッピングし、
書換えが発生する仮想ページに対して、当該仮想ページに対する書込み量に関する情報を基に、複数の物理ページを割り当てて物理メモリ容量を拡張し、
上記テーブルは、
仮想アドレスを物理アドレスに変換するための情報であって、仮想ページに割り当てられた物理ページアドレスを管理する情報を含み、
上記仮想メモリ制御部は、
仮想アドレスの第１の所定ビットを参照値として、ページディレクトリテーブルのエントリを特定し、当該第１の所定ビットが指定する仮想アドレス領域に対する物理ページのアドレスを管理するページテーブルにアクセスし、仮想アドレスの第２の所定ビットを参照値として、ページテーブルのエントリを特定し、該当する物理ページのアドレスを取得する
仮想メモリシステム。
【請求項２】
上記仮想メモリ制御部は、
仮想アドレスの上位ビットを参照値として、ページディレクトリテーブルのエントリを特定し、当該上位ビットが指定する仮想アドレス領域に対する物理ページのアドレスを管理するページテーブルにアクセスし、仮想アドレスの中位ビットを参照値として、ページテーブルのエントリを特定し、該当する物理ページのアドレスを取得し、仮想アドレスの下位ビットが示すアドレスをオフセットとして、データの物理アドレスを決定する
請求項１記載の仮想メモリシステム。
【請求項３】
上記仮想メモリ制御部は、
仮想ページに対して物理ページを割り当てる要求と、当該要求する領域に対するデータの書込み量に関する情報を受け取り、受け取った書込み量に関する情報を基に、仮想ページに割り当てる物理メモリ容量を拡張する
請求項１または２記載の仮想メモリシステム。
【請求項４】
上記仮想メモリ制御部は、
物理メモリ容量を拡張する容量を、データの書込み量に関する情報から、当該物理ページに発生する書換え回数を算出した結果によって決定する
請求項１から３のいずれか一に記載の仮想メモリシステム。
【請求項５】
上記仮想メモリ制御部は、
割り当てた物理ページ間の書込み回数を平均化する機能を含む
請求項１から４のいずれか一に記載の仮想メモリシステム。
【請求項６】
上記テーブルの情報には、物理ページ管理情報として、仮想ページに割り当てて使用中か、未割り当てであり未使用かを示す情報と、当該物理ページのこれまでの累積書込み容量に関する情報を含む
請求項１から５のいずれか一に記載の仮想メモリシステム。
【請求項７】
上記仮想メモリ制御部は、
物理メモリ容量を拡張する容量を、データの書込み量に関する情報から、当該物理ページに発生する書換え回数を算出した結果によって決定し、
上記テーブルの情報は、
仮想ページに割り当てられた物理ページアドレスを管理するテーブル情報に、当該物理ページが不揮発性メモリにあるか否かを示す情報と、上記決定した物理ページを拡張した容量に関する情報を含む
請求項６記載の仮想メモリシステム。
【請求項８】
仮想メモリシステムは、
物理ページ毎に現在までに発生した書込み容量を示す情報を保持し、
上記仮想メモリ制御部は、
タイマーなどの内部イベント、あるいはＯＳやアプリケーションからの指示によって、割り当てた物理ページ間でデータを移動する処理を行う
請求項７記載の仮想メモリシステム。
【請求項９】
上記仮想メモリ制御部は、
物理ページを拡張した容量部分にアクセスするように制御する機能を有する
請求項８記載の仮想メモリシステム。
【請求項１０】
上記テーブルの情報は、上記不揮発性メモリに保存される
請求項６から９のいずれか一に記載の仮想メモリシステム。
【請求項１１】
上記仮想メモリ制御部は、
上記不揮発性メモリの物理アドレス空間をページ単位で管理し、物理アドレス空間と仮想アドレス空間をマッピングし、アクセスのあった仮想アドレスを物理アドレスに変換する機能を有し、さらに、新しい物理ページを仮想ページに割り当て、仮想ページに割り当てられた物理ページを開放する機能を含む
請求項１から１０のいずれか一に記載の仮想メモリシステム。
【請求項１２】
上記仮想メモリ制御部は、
仮想ページと物理ページの対応を管理テーブルにより管理し、
未使用の物理ページが不足した場合に、すでに仮想ページに割り当て済みの物理ページの中から、パフォーマンスに与える影響が少ないと判断した物理ページを選択し、当該選択した物理ページのデータをストレージ上の専用の領域に書出すように制御する機能を有し、
上記管理テーブル上のストレージ上に退避された物理ページが割り当てられた仮想ページの属性には、メモリ上に存在しないことを示すフラグをセットする
請求項１１記載の仮想メモリシステム。
【請求項１３】
上記仮想メモリ制御部は、
上記ストレージ上の専用領域に書き出した物理ページのデータが再度必要となった場合に、空き物理ページにそのデータを読込むように制御する機能を有し、
上記管理テーブル上のメモリ上に存在しないことを示すフラグをリセットする
請求項１２記載の仮想メモリシステム。
【請求項１４】
上記仮想メモリ制御部の制御処理に従って上記不揮発性メモリにアクセスするメモリコントローラを有し、
上記仮想メモリ制御部は、
上記不揮発性メモリの書換え回数の上限に関する情報を上記メモリコントローラから取得する
請求項１から１３のいずれか一に記載の仮想メモリシステム。
【請求項１５】
ランダムアクセス可能で、書換え回数に上限があり、物理アドレス空間へのアクセスが仮想アドレスを介して行われる不揮発性メモリの物理アドレス空間をページ単位で管理し、物理アドレス空間と仮想アドレス空間をマッピングした情報をテーブルとして保持し、その仮想アドレスを物理アドレスに変換するための情報であって、仮想ページに割り当てられた物理ページアドレスを管理する情報を含むテーブルを使用して、アクセスのあった仮想アドレスを物理アドレスに変換するに際し、
物理アドレスと仮想アドレスをページ単位ごとにマッピングし、
書換えが発生する仮想ページに対して、当該仮想ページに対する書込み量に関する情報を基に、複数の物理ページを割り当てて物理メモリ容量を拡張し、
仮想アドレスの第１の所定ビットを参照値として、ページディレクトリテーブルのエントリを特定し、当該第１の所定ビットが指定する仮想アドレス領域に対する物理ページのアドレスを管理するページテーブルにアクセスし、仮想アドレスの第２の所定ビットを参照値として、ページテーブルのエントリを特定し、該当する物理ページのアドレスを取得する
仮想メモリの制御方法。
【請求項１６】
ランダムアクセス可能で、書換え回数に上限があり、物理アドレス空間へのアクセスが仮想アドレスを介して行われる不揮発性メモリの物理アドレス空間をページ単位で管理し、物理アドレス空間と仮想アドレス空間をマッピングした情報をテーブルとして保持し、その仮想アドレスを物理アドレスに変換するための情報であって、仮想ページに割り当てられた物理ページアドレスを管理する情報を含むテーブルを使用して、アクセスのあった仮想アドレスを物理アドレスに変換するに際し、
物理アドレスと仮想アドレスをページ単位ごとにマッピングし、
書換えが発生する仮想ページに対して、当該仮想ページに対する書込み量に関する情報を基に、複数の物理ページを割り当てて物理メモリ容量を拡張し、
仮想アドレスの第１の所定ビットを参照値として、ページディレクトリテーブルのエントリを特定し、当該第１の所定ビットが指定する仮想アドレス領域に対する物理ページのアドレスを管理するページテーブルにアクセスし、仮想アドレスの第２の所定ビットを参照値として、ページテーブルのエントリを特定し、該当する物理ページのアドレスを取得する
仮想メモリの制御処理をコンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本技術は、不揮発性で書換え回数に上限を持つランダムアクセス可能な不揮発性ランダムアクセスメモリに対応した仮想メモリシステム、仮想メモリの制御方法、およびプログラムに関するものである。
【背景技術】
【０００２】
現在の仮想メモリシステムはＭＭＵ（Memory Management Unit）と呼ばれるメモリ管理ユニットと、オペレーティングシステムの機能として実装された仮想メモリ制御ソフトウェアにより形成されている。
このような構成を有する仮想メモリシステムは、揮発性メモリであるＤＲＡＭの物理メモリ空間を対象としたシステムとして、さまざまなシステムで使用されている。
【０００３】
仮想メモリシステムによって物理メモリ（物理アドレス）空間はページ単位に分割して管理され、メモリを必要とするアプリケーションは、仮想メモリシステムに対して必要とする仮想ページを使用する前にあらかじめ要求し確保する。これをデマンドページングと呼ぶ。
仮想メモリシステムにおいては、必要とするメモリ容量のみ確保されるため、限られた物理メモリ容量を効率よく使用できるだけでなく、物理メモリ空間へのアクセスはアプリケーションごとに独立した仮想アドレス空間を使用してアクセスされる。
このため、仮想メモリシステムは、物理アドレス空間上で非連続な物理ページの並びであったとしても、仮想アドレス空間上においては、連続した仮想ページ空間としてアクセスできるメリットがある。
【０００４】
また、もし実行するアプリケーションに対して物理メモリ空間の容量が不足した場合には、スワップアウト処理と呼ばれる、最も使用頻度が低いと判断した仮想ページに割り当てられた物理ページのデータをハードディスクなどのストレージ（スワップ領域）上に書き出す処理を行う。その後、その物理ページを未使用物理ページとして前記アプリケーションが要求する仮想アドレスに割り当てることで、物理メモリ空間の不足を補うことができる。
【０００５】
ストレージ上のスワップ領域に退避されたページのデータは、そのデータに再度アクセスが発生した際にその仮想アドレスに再び物理ページを割り当て、スワップ領域からデータを読み込む処理（スワップイン）を行うことで、再び仮想メモリとしてアクセス可能となる。
これらスワップアウト、スワップイン処理は発生時にストレージへのアクセス、メモリとストレージ間のデータ転送などが発生し、アプリケーションから見てシステムのパフォーマンスの一時的な低下を引き起こす。ただし、物理メモリ容量の制約を受けずにアプリケーションの実行を可能とするメリットもある。
【０００６】
特許文献１には、システムのパフォーマンスを改善する技術が提案されている。
この技術は、現状ではＮＡＮＤフラッシュを代表とする不揮発性メモリを高速なストレージとして使用することで、コードやデータのロードや、上記スワップアウト、スワップインといったデマンドページングの処理を高速化し、システムパフォーマンスを改善する。
【０００７】
しかし、次世代メモリとして開発されているＰＣＭ、ＲｅＲＡＭといった不揮発性メモリデバイスは、ＮＡＮＤフラッシュと異なり、ＳＲＡＭやＤＲＡＭのようにワード単位の高速ランダムアクセスが可能である特徴がある。
このような不揮発性ランダムアクセスメモリは、その不揮発性である特徴を活かし、ＮＡＮＤフラッシュよりも高速なストレージを構成する以外に、ワークメモリであるＤＲＡＭを置換えることで、低消費電力で高速なシステムを実現することができる。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００７−１８８４９９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
ところで、次世代の不揮発性ランダムアクセスメモリは、メモリセルへの書込み時にベリファイ処理を行い書込みエラーを検出する機能を持ち、そのエラー発生率をある基準以下に抑えるためには、書換え回数の上限以下で使用する必要がある。一方で、ＳＲＡＭやＤＲＡＭのような揮発性メモリは書込みエラーが発生せず書換え回数の上限も持たない。このような次世代の不揮発性ランダムアクセスメモリによってＳＲＡＭやＤＲＡＭといった揮発性ランダムアクセスメモリの置換えを実現するためには、書換え回数に上限があることを踏まえてシステム構築する必要がある。
【００１０】
不揮発性メモリは書換え回数の増加とともにデータの保持特性が劣化するため、セルの書換え回数に制限を持っている。
揮発性メモリのように書換え回数に上限のないメモリを前提とした現在のシステムでは、不揮発性ランダムアクセスをそのままワークメモリとして使った場合、次のような不利益が生じる恐れがある。すなわち、不揮発性ランダムアクセスをそのままワークメモリとして使った場合、特定の領域に書換えが集中することによるデータエラーが発生し、システムの動作に致命的な影響を与える恐れが存在する。
【００１１】
現在のシステムでは揮発性ランダムアクセスメモリのリソースは仮想メモリシステムによって管理されている。
仮想メモリシステムが不揮発性ランダムアクセスメモリにも対応することによって、デマンドページングのような現在のシステムで有用な機能を実現しつつ、不揮発性であることによる消費電力の削減効果を発揮することができる。
具体的には、不揮発性ランダムアクセスメモリであれば、アクセスしないアドレス領域のメモリデバイスへの電源供給を停止できる。これにより、不揮発性ランダムアクセスメモリは同容量の揮発性メモリより低消費電力であり、またシステムの起動時や終了時に、メモリの状態を保存、再現するためにストレージにアクセスする必要もないため、さらにシステムの瞬間起動、瞬間終了が可能となる。
【００１２】
しかし、現状の仮想メモリシステムは、アプリケーションからメモリに対するアクセスを、仮想メモリアドレスを介して実現する仕組みである。
その結果、現状の仮想メモリシステムは、物理ページの割り当てはアプリケーションからの要求による順番によって決定され、さらにデータの書込みが特定の物理ページに集中することを管理制御する手段を持っていない。
【００１３】
また、物理ページへの書き込みアクセスを監視し、物理ページごとに書き換え回数を計測することは、アクセス性能に影響を与えずに実現することが非常に困難であり、また書き換え回数を保存する領域がデータ領域を圧迫する原因にもなると考えられる。
【００１４】
本技術は、書換え回数の制限のある不揮発性メモリに対するアクセスにおいてアプリケーションからは書込み制限を回避することが可能な仮想メモリシステム、仮想メモリの制御方法、およびプログラムを提供することにある。
【課題を解決するための手段】
【００１５】
本技術の第１の観点の仮想メモリシステムは、ランダムアクセス可能で、書換え回数に上限があり、物理アドレス空間へのアクセスが仮想アドレスを介して行われる不揮発性メモリと、上記不揮発性メモリの物理アドレス空間をページ単位で管理し、物理アドレス空間と仮想アドレス空間をマッピングした情報をテーブルとして保持し、そのテーブルを使用してアクセスのあった仮想アドレスを物理アドレスに変換する機能を含む仮想メモリ制御部と、を有し、上記仮想メモリ制御部は、書換えが発生する仮想ページに割り当てる物理メモリ容量を拡張する機能を含み、物理アドレスと仮想アドレスをページ単位ごとにマッピングし、書換えが発生する仮想ページに対して、当該仮想ページに対する書込み量に関する情報を基に、複数の物理ページを割り当てて物理メモリ容量を拡張し、上記テーブルは、仮想アドレスを物理アドレスに変換するための情報であって、仮想ページに割り当てられた物理ページアドレスを管理する情報を含み、上記仮想メモリ制御部は、仮想アドレスの第１の所定ビットを参照値として、ページディレクトリテーブルのエントリを特定し、当該第１の所定ビットが指定する仮想アドレス領域に対する物理ページのアドレスを管理するページテーブルにアクセスし、仮想アドレスの第２の所定ビットを参照値として、ページテーブルのエントリを特定し、該当する物理ページのアドレスを取得する。
【００１６】
本技術の第２の観点の仮想メモリの制御方法は、ランダムアクセス可能で、書換え回数に上限があり、物理アドレス空間へのアクセスが仮想アドレスを介して行われる不揮発性メモリの物理アドレス空間をページ単位で管理し、物理アドレス空間と仮想アドレス空間をマッピングした情報をテーブルとして保持し、その仮想アドレスを物理アドレスに変換するための情報であって、仮想ページに割り当てられた物理ページアドレスを管理する情報を含むテーブルを使用して、アクセスのあった仮想アドレスを物理アドレスに変換するに際し、物理アドレスと仮想アドレスをページ単位ごとにマッピングし、書換えが発生する仮想ページに対して、当該仮想ページに対する書込み量に関する情報を基に、複数の物理ページを割り当てて物理メモリ容量を拡張し、仮想アドレスの第１の所定ビットを参照値として、ページディレクトリテーブルのエントリを特定し、当該第１の所定ビットが指定する仮想アドレス領域に対する物理ページのアドレスを管理するページテーブルにアクセスし、仮想アドレスの第２の所定ビットを参照値として、ページテーブルのエントリを特定し、該当する物理ページのアドレスを取得する。
【００１７】
本技術の第３の観点の仮想メモリの制御方法は、ランダムアクセス可能で、書換え回数に上限があり、物理アドレス空間へのアクセスが仮想アドレスを介して行われる不揮発性メモリの物理アドレス空間をページ単位で管理し、物理アドレス空間と仮想アドレス空間をマッピングした情報をテーブルとして保持し、その仮想アドレスを物理アドレスに変換するための情報であって、仮想ページに割り当てられた物理ページアドレスを管理する情報を含むテーブルを使用して、アクセスのあった仮想アドレスを物理アドレスに変換するに際し、物理アドレスと仮想アドレスをページ単位ごとにマッピングし、書換えが発生する仮想ページに対して、当該仮想ページに対する書込み量に関する情報を基に、複数の物理ページを割り当てて物理メモリ容量を拡張し、仮想アドレスの第１の所定ビットを参照値として、ページディレクトリテーブルのエントリを特定し、当該第１の所定ビットが指定する仮想アドレス領域に対する物理ページのアドレスを管理するページテーブルにアクセスし、仮想アドレスの第２の所定ビットを参照値として、ページテーブルのエントリを特定し、該当する物理ページのアドレスを取得する仮想メモリの制御処理をコンピュータに実行させるプログラムである。
【発明の効果】
【００１８】
本技術によれば、書換え回数の制限のある不揮発性メモリに対するアクセスにおいてアプリケーションからのアクセス性能に影響を与えずに、書込み制限を回避することができる。
【図面の簡単な説明】
【００１９】
【図１】本第１の実施形態に係る不揮発性ランダムアクセスメモリ（ＮＶＲＡＭ）を適用した仮想メモリシステムの構成を示す図である。
【図２】一般的な仮想アドレス空間と物理アドレス空間のマッピング例を示す図である。
【図３】本実施形態の仮想アドレス空間と物理アドレス空間のマッピング例を示す図である。
【図４】仮想メモリシステムでの仮想アドレスから物理アドレスへの変換の過程を示す図である。
【図５】本実施形態に係る物理ページ管理情報テーブルの例を示す図である。
【図６】一般的な物理ページ管理情報テーブルの例を示す図である。
【図７】一般的なページディレクトリテーブルのエントリの例を示す図である。
【図８】一般的なページテーブルのエントリの例を示す図である。
【図９】本実施形態に係るページディレクトリテーブルのエントリの例を示す図である。
【図１０】本実施形態に係るページテーブルのエントリの例およびその仮想アドレスから物理アドレスを生成する過程を示す図である。
【図１１】本実施形態の仮想メモリシステムが仮想ページに対して新たに物理ページを割り当てる際の処理を説明するためのフローチャートである。
【図１２】本実施形態の仮想メモリシステムで、仮想ページのデータを書き換え回数の平均化のために容量拡張された物理ページ内で移動する処理を説明するためのフローチャートである。
【図１３】本実施形態の仮想メモリシステムで仮想ページに割り当てられた物理ページを開放するときの処理を説明するためのフローチャートである。
【図１４】本第２の実施形態に係る不揮発性ランダムアクセスメモリ（ＮＶＲＡＭ）を適用した仮想メモリシステムの構成を示す図である。
【図１５】ページテーブルを揮発性メモリ用と不揮発性メモリ用を独立に持つ場合の仮想メモリシステムでの仮想アドレスから物理アドレスへの変換の過程を示す図である。
【図１６】図１５の構成に対応する揮発性メモリのページテーブルエントリの例およびその仮想アドレスから物理アドレスを生成する過程を示す図である。
【図１７】図１５の構成に対応する不揮発性メモリのページテーブルエントリの例およびその仮想アドレスから物理アドレスを生成する過程を示す図である。
【図１８】本第３の実施形態に係る不揮発性ランダムアクセスメモリ（ＮＶＲＡＭ）を適用した仮想メモリシステムの構成を示す図である。
【発明を実施するための形態】
【００２０】
以下、本実施形態を図面に関連付けて説明する。
なお、説明は以下の順序で行う。
１．第１の実施形態（仮想メモリシステムの第１の構成例）
２．第２の実施形態（仮想メモリシステムの第２の構成例）
３．第３の実施形態（仮想メモリシステムの第３の構成例）
【００２１】
＜１．第１の実施形態＞
図１は、本第１の実施形態に係る不揮発性ランダムアクセスメモリ（ＮＶＲＡＭ）を適用した仮想メモリシステムの構成を示す図である。
【００２２】
本仮想メモリシステム１０は、仮想メモリ制御部としてのＣＰＵ２０、メモリコントローラ（Memory Controller）３０、不揮発性ランダムアクセスメモリ（ＮＶＲＡＭ）４０、およびシステムバス（System Bus）５０を含んで構成される。
不揮発性ランダムアクセスメモリ４０は、ランダムアクセス可能で、書換え回数に上限があり、その物理アドレス空間へのアクセスはＣＰＵ２０の制御の下、仮想アドレス空間を介して行われる。
【００２３】
ＣＰＵ２０は、プロセッサユニット（Processor Unit）２１、メモリ管理ユニット（ＭＭＵ；Memory Management Unit）２２、キャッシュメモリ２３を有する。
ＣＰＵ２０は、トランスレーションルックアサイドバッファ（Translation Look-aside Buffer；ＴＬＢ）２４、およびバスインタフェースユニット（Bus Interface Unit）２５を有する。
【００２４】
本実施形態に係る仮想メモリシステム１０は、基本的に書込み回数に上限を持った不揮発性ランダムアクセスメモリ４０を前提とした仮想メモリシステムとして形成される。
本仮想メモリシステム１０は、割り当てるメモリ領域に対して、アプリケーションからどれだけの書換え回数が発生するかを考慮してメモリ領域のアロケーションやサイズを決定する第１の機能を有する。
また、仮想メモリシステム１０は、タイマーなどの内部イベント、あるいはＯＳやアプリケーションからの指示を受けて、割り当てた物理ページ間で書込み回数を平均化するためにデータを移動する第２の機能を有する。
また、仮想メモリシステム１０は、仮想メモリ制御部としてのＣＰＵ２０が不揮発性ランダムアクセスメモリ４０の書換え回数の上限に関する情報をメモリコントローラから取得する。これにより、上記第１の機能および第２の機能を各不揮発性ランダムアクセスメモリの書換え回数の仕様に合わせて柔軟に対応することもできるように形成される。
【００２５】
図１の仮想メモリシステム１０において、仮想メモリ制御部としてのＣＰＵ２０は、そのシステムバス５０に接続されたメモリコントローラ３０を介して不揮発性ランダムアクセスメモリ４０にアクセスする。
ＣＰＵ２０内のプロセッサユニット２１はバスインタフェースユニット２５を介してシステムバス５０に接続されている。
バスインタフェースユニット２５にはＭＭＵ２２とキャッシュメモリ２３とＭＭＵ２２が使用するページディレクトリテーブル（Page Directory Table）、ページテーブル（Page Table）のエントリ（Entry）をキャッシュするＴＬＢ２４が接続されている。
なお、ＣＰＵとしては、キャッシュメモリ２３やＴＬＢ２４を命令用とデータ用で独立に持ったＣＰＵや、Ｌ１、Ｌ２、Ｌ３など複数段のキャッシュメモリを持ったＣＰＵも適用することが可能である。
【００２６】
メモリコントローラ３０は、入力されたコマンドとアドレスに従って、メモリコントローラ３０に接続されたメモリの中から、アクセスされるメモリデバイスを特定し、コマンドに従ってリード（読出し）およびライト（書込み）に関するアクセスを実行する。
本第１の実施形態において、メモリは不揮発性ランダムアクセスメモリである。ただし、後述するように、ＤＲＡＭ等の揮発性メモリを接続して、一般的な仮想メモリシステムとして構成することも可能である。
【００２７】
このＣＰＵ２０が、仮想メモリ制御部として機能するが、本実施形態のＣＰＵ２０は、以下の機能を持つように構成される。
ＣＰＵ２０において、仮想メモリ制御は、基本的にＭＭＵ２２と仮想メモリ制御ソフトウェアを中心に行われる。
【００２８】
ＭＭＵ２２は、不揮発性ランダムアクセスメモリ４０の物理アドレス空間をページ単位で管理し、物理アドレス空間と仮想アドレス空間をマッピングした情報をテーブルとして保持し、そのテーブルを使用してアクセスのあった仮想アドレスを物理アドレスに変換する機能を含む。
仮想メモリ制御部はＭＭＵ２２と仮想メモリ制御ソフトウェアによって、新しい物理ページを仮想ページに割り当てる機能と、仮想ページに割り当てられた物理ページを開放する機能を持つ。
【００２９】
ＭＭＵ２２は、仮想ページと物理ページの対応を後述するように、管理テーブルにより管理する。
仮想メモリ制御部は、未使用の物理ページが不足した場合に、ＭＭＵ２２が管理するすでに物理ページの割り当てられた仮想ページの中から、パフォーマンスに与える影響が少ないと判断した仮想ページを選択し、その仮想ページに割り当てられた物理ページのデータをストレージ上の専用の領域に書出すように制御する。
ここで、パフォーマンスに与える影響の少ないとは、たとえば最もアクセス頻度が低いと判断したページを選択することである。
仮想メモリ制御部は、上記物理ページのデータをストレージ上に退避した後、上記物理ページに割り当てられた仮想ページの管理テーブル上の属性に、その仮想ページが物理メモリ上に存在しないことを示すフラグをセットする。
仮想メモリ制御部は、ストレージ上の専用領域に書き出した物理ページのデータが再度必要となった場合に、空き物理ページにそのデータを読込むように制御し、そのときＭＭＵ２２の管理する上記管理テーブル上の属性のメモリ上に存在しないことを示すフラグをリセットする。
なお、ストレージとしては、ハードディスク等を例示することができる。
【００３０】
仮想メモリ制御部は、仮想ページに対して物理ページを割り当てる要求と、その要求する領域に対するデータの書込み量に関する情報を受け取り、受け取った書込み量に関する情報を基に、仮想ページに割り当てる物理メモリ容量を拡張する機能を含む。
ＭＭＵ２２は、物理アドレスと仮想アドレスをページ単位ごとにマッピングし、書換えが発生する仮想ページに対して、その仮想ページに対する書込み量に関する情報を基に、複数の物理ページを割り当てて管理することができる。
【００３１】
仮想メモリ制御部は、物理メモリ容量を拡張する容量を、データの書込み量に関する情報から、その物理ページに発生する書換え回数を算出した結果によって決定する。
仮想メモリ制御部は、タイマーなどの内部イベントあるいは、ＯＳやアプリケーションからの指示に従って、割り当てた物理ページ間でデータを移動し、書込み回数を平均化する機能を含む。
本実施形態において、仮想メモリシステム１０は、仮想アドレスを物理アドレスに変換するための情報を含む２つの管理テーブルを有する。
第１の管理テーブルには、物理ページ管理情報として、仮想ページに割り当てて使用中か、未割り当てであり未使用かを示す情報と、その物理ページのこれまでの累積書込み容量に関する情報を含む（後述する図５）。
第２の管理テーブルには、アドレス変換情報として、仮想ページに割り当てられた物理ページアドレスを管理する情報を含み、この情報に、その物理ページが不揮発性メモリにあるか否かを示す情報と、上記決定した物理ページを拡張した容量に関する情報を含む。
【００３２】
仮想メモリシステム１０において、仮想メモリ制御部は仮想ページに割り当てられた物理ページへの書込み回数が増加することによるデータエラーの発生を軽減するための処理として、タイマーなどの内部イベント、あるいはＯＳやアプリケーションからの指示によって物理ページを拡張した容量部分にアクセスするように制御する機能を有する。
【００３３】
本実施形態において、管理テーブルの情報は、不揮発性ランダムアクセスメモリ４０に保存される。
これにより、電源投入時は、不揮発性ランダムアクセスメモリ４０上からテーブル情報を読み取り、電源切断前の状態に復帰することが可能となっている。
【００３４】
また、ＣＰＵ２０の仮想メモリ制御部は、不揮発性ランダムアクセスメモリ４０の書換え回数の上限に関する情報をメモリコントローラ３０から取得することも可能である。
【００３５】
以下、上記したような特徴的な構成を有するＣＰＵ２０における仮想メモリ制御について、不揮発性ランダムアクセスメモリではなく揮発性メモリを適用した一般的な仮想メモリシステムと対比しつつ、具体的に説明する。
【００３６】
［一般的なシステム］
現状の一般的なシステムにはメモリコントローラとしてＤＲＡＭコントローラを使用して揮発性メモリであるＤＲＡＭをワークメモリとして使用するシステムがもっとも多く存在する。
また近年ではＣＰＵとワークメモリ間の転送効率を改善するために、ＤＲＡＭコントローラをＣＰＵに内蔵したデバイスも存在している。
このような現状のシステムではメモリがすべて揮発性であるため、システムの起動にはＢＩＯＳと呼ばれるＲＯＭを必要とする。
そして、ＢＩＯＳ内のブートローダ（Boot Loader）と呼ばれるプログラムを実行することでＯＳ、さらにＯＳによってアプリケーションまで、その実行に必要とするプログラムコードとデータが、ハードディスクなどのストレージ上からワークメモリ上にロードされ、順次実行される。
ハードディスクのアクセス時間は数１０ｍｓに対し、ワークメモリのＤＲＡＭは数１０ｎｓレベルと、そのアクセス時間のギャップは大きい。
ＮＡＮＤフラッシュを搭載したＳＳＤの登場によりストレージのアクセス時間は数１００μｓまで改善されたが、いまだにＤＲＡＭとの間にはアクセス速度のギャップが存在しており、効率のよいＣＰＵの動作を妨げる大きな要因となっている。
【００３７】
［一般的な仮想アドレス空間と物理アドレス空間のマッピング］
図２は、一般的な仮想アドレス空間と物理アドレス空間のマッピング例を示す図である。
一般的な仮想メモリシステムでは、使用するメモリはＳＲＡＭやＤＲＡＭのように書込み回数の上限を持たない揮発性メモリである。
仮想アドレス空間ＶＡＳは、物理アドレス空間ＰＡＳよりも大きなアドレス空間であり、ページＰＧと呼ばれる一般的には４Ｋｂｙｔｅのサイズからなる単位領域ごとに仮想アドレスと物理アドレスがマッピングされる。１つの仮想ページＶＰＧは１つの物理ページＰＰＧに割り当てられ、そのサイズは一致している。
たとえば、図２のリード領域（Read Area）ＲＡ１は読出し専用の領域であり、ライト領域（Write Area）ＷＡ１、ＷＡ２は読出しと書込みを行う領域である。これら３つの領域では割り当てられた仮想ページＶＰＧと物理ページＰＰＧの数は一致している。
【００３８】
［本実施形態の仮想アドレス空間と物理アドレス空間のマッピング］
図３は、本実施形態の仮想アドレス空間と物理アドレス空間のマッピング例を示す図である。
ここで使用するメモリは不揮発性ランダムアクセスメモリであり、書換え回数の上限が存在するメモリである。
本実施形態の仮想メモリシステム１０は、書換えが発生する仮想ページに対して、複数の物理ページを割り当てることにより、書換え回数の制限を回避することを特徴としている。
たとえば、図３のリード領域（Read Area）ＲＡ１１は読出し専用の領域であり、ライト領域（Write Area）ＷＡ１１は読出しと書込みを行う領域である。これら２つの領域では割り当てられた仮想ページＶＰＧと物理ページＰＰＧの数は一致している。
一方のライト領域（Write Area）ＷＡ１２は仮想メモリ空間でのサイズが２ページであるのに対して、物理メモリ空間では４ページとなっている。
ライト領域（Write Area）ＷＡ１１とライト領域（Write Area）ＷＡ１２の違いは、その領域に発生する書込みデータの量の違いから来る書換え回数の違いである。ライト領域（Write Area）ＷＡ１２はライト領域（Write Area）ＷＡ１１の２倍の書換え回数が発生することを意味している。
本実施形態では、仮想ページＶＰＧに対する書込み量を示す情報が仮想メモリシステム１０に対して提供されており、その書込み量に関する情報に基づき、割り当てるべき物理ページＰＰＧの数を算出し決定する機能を持っている。
【００３９】
［仮想メモリシステムでの仮想アドレスから物理アドレスへの変換の過程］
図４は、仮想メモリシステムでの仮想アドレスから物理アドレスへの変換の過程を示す図である。
このアドレス変換には第２の管理テーブルとして、ページディレクトリテーブル（Page Directory Table）ＰＤＴ１１とページテーブル（Page Table）ＰＴ１１の２つのテーブルが使用される。
ページディレクトリテーブルＰＤＴ１１は仮想アドレスＶＡの上位ビット（Bit）ＵＢＴを参照値として、ページディレクトリテーブルＰＤＴ１１のエントリ（Entry）ＰＤＴＥを特定する。そして、その上位ビットＵＢＴが指定する仮想アドレス領域に対する物理ページＰＰＧのアドレスを管理するページテーブルＰＴ１１にアクセスする。
次に、仮想アドレスＶＡの中位ＭＢＴを参照値として、ページテーブルＰＴ１１のエントリ（Entry）ＰＴＥを特定し、該当する物理ページＰＰＧのアドレスを取得する。残った下位ビットＬＢＴが示すアドレスをオフセットとして、最終的なデータの物理アドレスＰＡ(Physical Address)が決まる。
【００４０】
このようにページディレクトリテーブルＰＤＴ１１、ページテーブルＰＴ１１は、仮想アドレスＶＡを物理アドレスＰＡに変換するために必須となる情報を持ったテーブルであり、この物理アドレスＰＡが示すと同じメモリ上に保持されている。
図５は、本実施形態に係る物理ページ管理情報テーブルの例を示す図である。
図６は、図５の比較例であって、一般的な物理ページ管理情報テーブルの例を示す図である。
第１の管理テーブルとして、各物理ページが仮想ページに割り当て使用中であるかの情報（使用状態フラグｕｆｌａｇ）を持つ物理ページ管理情報テーブルＰＰＧＭＴ１を持つ。
仮想メモリ制御部が新たに物理ページＰＰＧを割り当てる場合や、割り当てた物理ページＰＰＧを解放する場合に、図５および図６に示すように、この物理ページ管理情報を元に、その対象となる物理ページの管理情報を変更し管理している。
一般的な揮発性メモリを搭載した仮想メモリシステムでは終了時にストレージ上にこれらの２つの管理テーブルを保存し、起動時に再び読み込むことで、終了前の状態を再現する。
本実施形態の物理ページ管理情報は、上記使用状態フラグｕｆｌａｇの他に、図５に示すように、現在までの書込み容量を示す情報（ＣＷＡＭ）を持つ。仮想メモリ制御部が新たに物理ページを割り当てる場合や、割り当てた物理ページを解放する場合に、この物理ページ管理情報を基に、使用状態フラグｕｆｌａｇと現在までの書込み容量ＣＷＡＭを元に物理ページを選択し、それぞれの情報を更新管理している。使用状態フラグｕｆｌａｇは、たとえば未使用時は論理「０」に設定され、使用時は論理「１」に設定される。
本実施形態は不揮発性ランダムアクセスメモリ４０を搭載するため、そのようなストレージへのアクセス、保存が不要となる。
【００４１】
［一般的なページディレクトリテーブルのエントリ（Entry）の例］
図７は、一般的なページディレクトリテーブルのエントリ（Entry）の例を示す図である。
図７のページディレクトリテーブルエントリＰＤＴＥ１は、仮想アドレスの上位ビットで指定された領域のページテーブルＰＴ１１が存在する先頭物理アドレスを示すページテーブルベースアドレス（Page Table Base Address）ＰＴＢＡを含む。
ページディレクトリテーブルエントリＰＤＴＥ１は、ページデーブルベースアドレスＰＴＢＡとその他の情報ビットにより形成される。
ページレベルキャッシュディセブル（Page Level Cache Disable）ＰＣＤビットは、このビットが１の場合に、このエントリ（Entry）が示す仮想アドレス領域は上記ＣＰＵ２０の持つキャッシュ（Cache）メモリ２３に保存されないことを示す。
【００４２】
ページレベルキャッシュライトスルー（Page Level Cache Write Through）ＰＣＷＴビットは、前記ＰＣＤビットが０であり、後に示すＲ／Ｗ（Read/Write）ビットが１であった場合に、次のことを示す。
すなわち、ページレベルキャッシュライトスルーＰＣＷＴビットが１である場合は、このエントリ（Entry）の示す仮想アドレス領域への書込みはＣＰＵ２０の持つキャッシュメモリ２３に保存され、かつ仮想アドレス領域に対しても書き込まれることを示す。
つまり、この領域に対する書込みはキャッシュメモリ２３に対して行われず直接このエントリ（Entry）が示したページテーブルＰＴ１１によって指示される物理ページ領域に書込まれることを示す。
ＰＣＷＴビットが０であった場合には、ライトバック（Write Back）方式であることを示し、このエントリ（Entry）が示す仮想アドレス領域への書込みはＣＰＵ２０の持つキャッシュメモリ２３に対して行われることを示す。
【００４３】
Ｒ／Ｗビットは、そのビットが１であった場合には、そのエントリ（Entry）が示す仮想アドレス領域に対してリード（Read）アクセスまたはライト（Write）アクセスが行われることを示している。
Ｒ／Ｗビットは、そのビットが０であった場合には、リードオンリー（Read Only）であることを示している。
【００４４】
プレゼンス（Presence）Ｐビットは、このビットＰが１であった場合は、そのエントリ（Entry）が示す仮想アドレス領域のデータがメモリ上に存在することを示す。
プレゼンスＰビットが０であった場合には、そのデータはスワップアウトされストレージ上に保存されており、再利用するには新たな物理アドレス空間を割り当て、データをストレージから読み込むスワップインの処理が必要であることを示している。
【００４５】
［一般的なページテーブルのエントリ（Entry）の例］
図８は、一般的なページテーブルのエントリ（Entry）の例を示す図である。
図８のページテーブルエントリＰＴＥ１は、そのエントリ（Entry）の示す仮想ページに割り当てられた物理ページの先頭アドレスを示すページベースアドレス（Page Base Address）ＰＢＡとその他の情報ビットにより形成される。
ダーティビット（Dirty Bit）ＤＢビットは、そのビットが１であった場合は、そのエントリ（Entry）の仮想ページＶＰＧに割り当てられた物理ページＰＰＧに対して書込みが発生したことを示す。
それ以外の情報ビットは図７のページディレクトリテーブルエントリＰＤＴＥ１と同様である。
【００４６】
［本実施形態に係るページディレクトリテーブルのエントリの例］
図９は、本実施形態に係るページディレクトリテーブルのエントリの例を示す図である。
図９のページディレクトリテーブルエントリＰＤＴＥ１１は、図７のエントリにＮＶＭ(Non-Volatile Memory)ビットが情報ビットとして付加されている。
ＮＶＭビットは、そのビット１である場合にはこのエントリ（Entry）が示すページテーブルＰＴ１１と仮想アドレス領域に割り当てられた物理ページＰＰＧはすべて不揮発性ランダムアクセスメモリ４０であり、書換え回数に上限を持つメモリによる物理ページ空間であることを示す。
【００４７】
［本実施形態に係るページテーブルのエントリの例］
図１０（Ａ）および（Ｂ）は、本実施形態に係るページテーブルのエントリの例およびその仮想アドレスから物理アドレスを生成する過程を示す図である。
図１０（Ａ）のページテーブルエントリＰＴＥ１１は、図８のエントリに３つの情報ビットが付加されている。
ページテーブルエントリＰＴＥ１１は、このエントリ（Entry）の示す仮想ページＶＰＧに対して割り当てられた物理ページ数を示すページ数（Page Number）ＰＮビットを有する。
さらに、ページテーブルエントリＰＴＥ１１は、割り当てられた物理ページの中で、現在使用中のページを示すページ番号（Current Page Number）ＣＰＮビットを有し、ページベースアドレスＰＢＡはページ番号ＣＰＮで示された物理ページのアドレスを示す。
さらに、ページテーブルエントリＰＴＥ１１は、ＮＶＭ（Non-Volatile Memory）ビットを有する。
上記ＰＮビットおよびＣＰＮビットの値は、ＮＶＭビットが１であるときに有効である。
また、このＮＶＭビットが０である場合にはこの仮想ページに割り当てられたメモリが揮発性メモリであることを示す。
【００４８】
物理アドレスＰＡは、図１０（Ｂ）に示すように、ページテーブルエントリＰＴＥ１１のページベースアドレスＰＢＡと仮想アドレスＶＡのオフセットＯＦＳＴの論理和（ＯＲ）をとることにより生成される。
【００４９】
［仮想ページに対して新たに物理ページを割り当てる際の処理］
図１１は、本実施形態の仮想メモリシステムが仮想ページに対して新たに物理ページを割り当てる際の処理を説明するためのフローチャートである。
【００５０】
第１のステップＳＴ１において、物理ページ管理情報から、現在未使用である物理ページアドレスを取得し、第２のステップＳＴ２でその物理ページの現在までの書込み容量に関する情報を取得する。
第３のステップＳＴ３では、下記の計算式から要求された仮想ページ領域に必要となる物理ページ数を算出する。
【００５１】
【数１】
0005664347.tif 000002
【００５２】
本実施形態の仮想メモリシステム１０では、不揮発性ランダムアクセスメモリ４０の物理ページを要求する際に、その領域に対するデータの総書込み容量に関する情報ＴＷＡＭを渡すことを特徴とする。
本実施形態の仮想メモリシステム１０は、総書込み容量ＴＷＡＭと、不揮発性メモリの書換え回数の上限値ＵＬＷＮと、新たに割り当てる物理ページの現在までの総書込み容量ＣＷＡＭから必要な物理ページ数ＮＰＮを算出する。
第４のステップＳＴ４で、物理ページ数が、要求するページ数よりも大きくなった場合には、再度その割り当てが可能となる物理ページを探索する。
割り当て可能な物理ページが見つかれば、第５のステップＳＴ５でその物理ページ領域を未使用から使用状態に変更して物理ページ管理情報を更新する。第６のステップＳＴ６で、さらにその物理ページの先頭アドレスをページテーブルエントリ（Page Table Entry）に登録する。
【００５３】
ページ数の算出について具体例を示す。
仮想ページ、物理ページが４Ｋｂｙｔｅとして、要求する仮想ページ数は２ページ（Page）、不揮発性メモリの書換え回数の上限が１００００回とする。
割り当てようとする物理ページのＣＷＡＭがゼロであり、総書込み容量が８０ＭＢｙｔｅ以下であった場合には、上記式（１）から計算した結果（ただし、α＝１）、１００００回の書換えが発生することになる。その結果、割り当てに必要となる物理ページ数も要求サイズに等しい２ページとなる。
もし、総書込み容量が１６０ＭＢｙｔｅであった場合には、２ページ（Page）では書換え回数が上限である１００００回を上回るため、４ページ（Page）を割り当てる必要があることになる。
【００５４】
この算出方法は一例である。
たとえばライトバック方式のキャッシュを使用する場合には、ライトバック時以外の書込みはキャッシュで吸収されるため、書換え回数の増加は起こらず、前記の算出方法よりも少ない物理ページの割り当てで対応できる可能性を持っている。
また、書換え回数を平均化するために、割り当てた物理ページ間でデータを移動することによっても書込みが発生する。
そのため、上記式（１）においても係数αを定義することで、そのシステムのキャッシュメモリの容量、方式、ページサイズなどの仕様や、そのシステム上で動作するアプリケーションのメモリ使用量、さらに平均化のためのデータ移動の頻度などから適切な係数αを導き出して使用する。これにより、割り当てる物理ページ数を最適化していくことができる。
【００５５】
本実施形態の仮想メモリシステムでは、物理ページを割り当てる段階で総書込み容量を算出することによって、書換え回数をカウントする処理を不要にすることができる。書換え回数のカウントを実現するには、書込みの発生を監視しアドレスを検出する仕組みと、そのアドレスごとに書込み回数をカウントし保存する仕組みが必要となり、メモリへの書込みアクセスにこれらの仕組みを持つことは、その実現が困難な上に、パフォーマンスへの影響も避けられない。そのような書換え回数のカウントを不要とすることは、本発明の目指す不揮発性ランダムアクセスメモリに対応した仮想メモリシステムを実現する上で大きなメリットとなる。
【００５６】
図１２は、本実施形態の仮想メモリシステムで、仮想ページのデータを書き換え回数の平均化のために、容量拡張された物理ページ内で移動する処理を説明するためのフローチャートである。ＯＳやアプリケーションは発生するデータ書き込み容量を算出するために、あらかじめデータ移動を行うタイミングを設定しておくことが望ましい。
【００５７】
図１２の第１のステップＳＴ１１でページテーブルＰＴ１１に保存されたエントリのＣＰＮビットの値をインクリメントする。新しいＣＰＮビットは現在のページベースアドレスＰＢＡが示す物理ページの次のページを示す。
第２のステップＳＴ１２でそのＣＰＮビットの値がＰＮビットに一致した場合には、ステップＳＴ１６でＣＰＮビットを０に設定する。この場合、新しいＣＰＮビットはこの仮想アドレスに割り当てられた物理ページの先頭のページを示す。
第３のステップでＳＴ１３は、現在のページベースアドレスＰＢＡで示される物理ページを新しいＣＰＮビットが示す物理ページへコピーする。
第４のステップＳＴ１４では、新しいＣＰＮビットが示す物理ページアドレスを新たなページベースアドレスＰＢＡとしてページテーブルエントリＰＴＥ１１に登録する。
第５のステップＳＴ１５では、第４のステップＳＴ１４においてテーブルＴＢＬ上で変更したページテーブルエントリＰＴＥ１１を不揮発性ランダムアクセスメモリ４０上に存在するページテーブルＰＴ１１上に反映する処理を行っている。
【００５８】
図１２に示した物理ページ間のデータコピーはシステムの処理時間に影響があるため、そのシステムのアプリケーションに適切な間隔及びタイミングで処理できるように調整することが必要となる。
また、データ移動の処理をＣＰＵのソフトウェアによって実現すると、それらのデータがＣＰＵの持つデータキャッシュメモリを占有するため、その後のアプリケーションの動作パフォーマンスにまで影響を与える可能性が高い。図１２に示したデータ移動の処理はＤＭＡを使って実現されることが望ましい。
【００５９】
図１３は、本実施形態の仮想メモリシステムで仮想ページに割り当てられた物理ページを開放するときの処理を説明するためのフローチャートである。
【００６０】
図１３の第１のステップＳＴ２１でテーブルＴＢＬ上のページテーブルエントリＰＴＥ１１の初期化を行う。
そして、第２のステップＳＴ２２で不揮発性ランダムアクセスメモリ４０上のページテーブルＰＴ１１を更新し、第３のステップＳＴ２３で解放された物理ページを未使用状態とし、さらに総書き込み容量ＴＷＡＭを現書き込み容量ＣＷＡＭに加算し、物理ページ管理情報を更新する。
【００６１】
本実施形態の仮想メモリシステム１０は、動作時に必要となる物理ページ管理情報、ページディレクトリテーブルＰＤＴ１１、ページテーブルＰＴ１１がすべて不揮発性ランダムアクセスメモリ４０上に存在する。
このため、一般的な仮想メモリシステムのように終了処理において、現在の仮想メモリの状態を再現するために必要な情報を構成し、ストレージに保存する処理が不要である。
そして、起動処理においても、終了時にストレージに保存した情報を読込み仮想メモリの状態を再現する処理が不要であることから、システムの高速な終了と起動を可能とし、ストレージへのアクセスも削減できる。その結果、特に煩雑に電源の起動・終了を繰り返すシステムにおいては、消費電力の削減効果も大きくなることが期待される。
【００６２】
また、本実施形態の仮想メモリシステム１０においても、一般的な仮想メモリシステムと同様にスワップアウト、スワップイン処理に対応することは可能である。
スワップアウト処理の場合には、その物理ページのデータをストレージ上の専用領域（スワップ領域）に書込んだ後、その物理ページをリリースして新しい仮想ページを割り当てる処理を行う。
スワップイン処理の場合には、空き物理ページを新しい仮想ページに割り当てる処理を行った後、ストレージ上のスワップ領域からその仮想ページに該当するデータの読込み処理を行う。
【００６３】
＜２．第２の実施形態＞
図１４は、本第２の実施形態に係る不揮発性ランダムアクセスメモリ（ＮＶＲＡＭ）を適用した仮想メモリシステムの構成を示す図である。
【００６４】
本第２の実施形態に係る仮想メモリシステム１０Ａが第１の実施形態に係る仮想メモリシステム１０と異なる点は次の通りである。
本仮想メモリシステム１０Ａでは、メモリコントローラ３０Ａに対して不揮発性ランダムアクセスメモリ４０に加えて、ＤＲＡＭ等の揮発性ランダムアクセスメモリ４０Ａが接続されている。
【００６５】
図９および図１０に関連付けて説明したように、本実施形態においては、ＮＶＭビットがページディレクトリテーブルＰＤＴ１１、ページテーブルＰＴ１１の各エントリ（Entry）に追加されている。
これにより、第１および第２の本実施形態の仮想メモリシステム１０，１０Ａが不揮発性ランダムアクセスメモリ４０と、揮発性ランダムアクセスメモリ４０Ａの両方に対応可能である。
本第２の実施形態の仮想メモリシステム１０Ａでは、実際に揮発性ランダムアクセスメモリ４０Ａがメモリコントローラ１０Ａに接続され、不揮発性と揮発性のメモリに対応可能に構成されている。
なお、図１４ではメモリコントローラが一つの場合を示しているが、不揮発性ランダムアクセスメモリ４０と、揮発性ランダムアクセスメモリ４０Ａに個別に対応可能な複数のメモリコントローラを配置する構成を採用することも可能である。
【００６６】
ＮＶＭビット＝０の場合は、一般的な仮想メモリシステムと同じ動作が可能となり、本実施形態で追加した各エントリ（Entry）の項目は使用されない。
また起動処理において、ページディレクトリテーブルエントリＰＤＴＥ１１、ページテーブルエントリＰＴＥ１１でＮＶＭビットが０のエントリ（Entry）は初期化されるが、ＮＶＭビットが１のエントリ（Entry）の情報はそのまま使用される。
【００６７】
図１５は、ページテーブルを揮発性メモリ用と不揮発性メモリ用を独立に持つ場合の仮想メモリシステムでの仮想アドレスから物理アドレスへの変換の過程を示す図である。
【００６８】
図１５に示すように、ページテーブルを揮発性メモリ用ページテーブルＰＴ１１と不揮発性メモリ用ページテーブルＰＴ１２を独立に持つことで、不揮発性ランダムアクセスメモリ４０の物理ページＰＰＧを仮想ページＶＰＧのサイズを独立に定義することができる。
書換え回数を強化するために、前記のように物理ページ単位で仮想ページよりも大きな容量にする以外の手法として次のような方法を採用可能である。
すなわち、ＥＣＣを保存する容量を追加し、物理ページ上のデータをＥＣＣによって保護することでデータ保持特性を改善し、結果として書換え回数を強化することもできる。
【００６９】
図１５の構成の場合のページテーブルエントリ（Page Table Entry）ＰＴＥの構成を図１６および図１７に示す。
【００７０】
図１６（Ａ）および（Ｂ）は、図１５の構成に対応する揮発性メモリのページテーブルエントリの例およびその仮想アドレスから物理アドレスを生成する過程を示す図である。
【００７１】
ページディレクトリテーブルエントリＰＤＴＥ１１のＮＶＭビットが０であった場合には、そのエントリ（Entry）が指すページテーブルベースアドレスＰＴＢＡのページテーブルＰＴ１１は、このページテーブルエントリＰＴＥ１１により形成される。
もしページテーブルの一部がＮＶＭ（Non-Volatile Memory）であった場合には、そのページテーブルエントリＰＴＥ１１のＮＶＭビットが１に設定される。ページベースアドレスＰＢＡは図１６（Ａ）に示すページテーブルエントリＰＴＥ１１から成るページテーブル（Page Table）を指す。
【００７２】
この場合、物理アドレスＰＡは、図１６（Ｂ）に示すように、ページテーブルエントリＰＴＥ１１のページベースアドレスＰＢＡと仮想アドレスＶＡのオフセットＯＦＳＴの論理和（ＯＲ）をとることにより生成される。
【００７３】
図１７（Ａ）および（Ｂ）は、図１５の構成に対応する不揮発性メモリのページテーブルエントリの例およびその仮想アドレスから物理アドレスを生成する過程を示す図である。
【００７４】
ページディレクトリテーブルエントリＰＤＴＥ１１のＮＶＭビットが１であった場合には、そのエントリ（Entry）が指すページテーブルベースアドレスＰＴＢＡのページテーブルは、このページテーブルエントリＰＴＥ１２により形成される。このページテーブルエントリＰＴＥ１２は拡張サイズ（Extended Size）ビットが付加されている。
拡張サイズ（Extended Size）は登録された物理ページが、仮想ページよりも拡張されているサイズを示す値である。
したがって、ページベースアドレスＰＢＡは、常にページ境界のアドレスにはならないため、図１６（Ｂ）に示すように、物理アドレスＰＡの算出には加算器ＡＤＤが必要となる。
【００７５】
＜３．第３の実施形態＞
図１８は、本第３の実施形態に係る不揮発性ランダムアクセスメモリ（ＮＶＲＡＭ）を適用した仮想メモリシステムの構成を示す図である。
【００７６】
本第３の実施形態に係る仮想メモリシステム１０Ｂが第１の実施形態に係る仮想メモリシステム１０と異なる点は、仮想メモリ制御部としてのＣＰＵ２０ＡにＥＣＣ回路２６が配置されていることにある。
【００７７】
不揮発性ランダムアクセスメモリ４０から読込まれたデータはキャッシュメモリ２３に転送されるが、ＥＣＣを付加されたデータの場合には、ＥＣＣ回路２６による誤り検出・訂正後のデータがキャッシュメモリ２３に転送される。
また、書込み時にはキャッシュメモリ２３のデータがメモリコントローラ３０を介して不揮発性ランダムアクセスメモリ４０に転送されるが、ＥＣＣコードが追加して書込まれる。
【００７８】
なお、この構成は第２の実施形態の仮想メモリシステムにも適用することは可能である。
【００７９】
以上説明したように、本実施形態によれば、以下の効果を得ることができる。
本実施形態の仮想メモリシステムでは、割り当てるメモリ領域に対して、アプリケーションからどれだけの書換え回数が発生するかを考慮してメモリ領域のアロケーションやサイズを決定する機能を有する。
これにより、本実施形態によれば、書換え回数が大きいほど割り当てる容量を大きくすることで、書換え回数が不揮発性ランダムアクセスメモリの上限仕様内に収まるように割り当てることが可能となる。また、書換え回数の上限がある不揮発性ランダムアクセスメモリもアプリケーションからは書換え回数に上限のない不揮発性メモリとしてアクセスすることが可能となる。
また、タイマーなどの内部イベント、あるいはＯＳやアプリケーションからの指示を受けて割り当てた物理ページ間でデータを移動する機能により、上記割り当てた領域内で効率よく書換え回数が均一化されることで、書換え回数に従って大きくする容量を小さく抑え、メモリ使用効率の改善が可能となる。
また、本実施形態によれば、仮想メモリシステムに接続された不揮発性ランダムアクセスメモリの書換え回数の上限に関する情報をメモリコントローラから取得するように構成することも可能である。
これにより、書換え回数の上限の異なる不揮発性ランダムアクセスメモリを接続した場合にも、ある割当て要求に対して、それぞれの不揮発性ランダムアクセスメモリに最適な物理ページ数を割り当てることができる。また、要求される書換え回数と容量に従って、物理ページを確保する不揮発性ランダムアクセスメモリを選択することも可能となり、メモリ使用効率の改善も可能となる。
【００８０】
また、以上詳細に説明した方法は、上記手順に応じたプログラムとして形成し、ＣＰＵ等のコンピュータで実行するように構成することも可能である。
また、このようなプログラムは、半導体メモリ、磁気ディスク、光ディスク、フロッピー（登録商標）ディスク等の記録媒体、この記録媒体をセットしたコンピュータによりアクセスし上記プログラムを実行するように構成可能である。
【００８１】
なお、本技術は以下のような構成もとることができる。
（１）ランダムアクセス可能で、書換え回数に上限があり、物理アドレス空間へのアクセスが仮想アドレスを介して行われる不揮発性メモリと、
上記不揮発性メモリの物理アドレス空間をページ単位で管理し、物理アドレス空間と仮想アドレス空間をマッピングし、アクセスのあった仮想アドレスを物理アドレスに変換する機能を含む仮想メモリ制御部と、を有し、
上記仮想メモリ制御部は、
書換えが発生する仮想ページに割り当てる物理メモリ容量を拡張する機能を含む
仮想メモリシステム。
（２）上記仮想メモリ制御部は、
仮想ページに対して物理ページを割り当てる要求と、当該要求する領域に対するデータの書込み量に関する情報を受け取り、受け取った書込み量に関する情報を基に、仮想ページに割り当てる物理メモリ容量を拡張する
上記（１）記載の仮想メモリシステム。
（３）上記仮想メモリ制御部は、
物理アドレスと仮想アドレスをページ単位ごとにマッピングし、
書換えが発生する仮想ページに対して、当該仮想ページに対する書込み量に関する情報を基に、複数の物理ページを割り当てて物理メモリ容量を拡張する
上記（１）または上記（２）記載の仮想メモリシステム。
（４）上記仮想メモリ制御部は、
物理メモリ容量を拡張する容量を、データの書込み量に関する情報から、当該物理ページに発生する書換え回数を算出した結果によって決定する
上記（１）から上記（３）のいずれか一に記載の仮想メモリシステム。
（５）上記仮想メモリ制御部は、
タイマーなどの内部イベント、あるいはＯＳやアプリケーションからの指示によって割り当てた物理ページ間でデータを移動する機能を持つことで、書込み回数を平均化する機能を含む
上記（１）から上記（４）のいずれか一に記載の仮想メモリシステム。
（６）仮想メモリシステムは、
仮想アドレスを物理アドレスに変換するための情報を含むテーブルを有し、
上記テーブルの情報には、物理ページ管理情報として、仮想ページに割り当てて使用中か、未割り当てであり未使用かを示す情報と、当該物理ページのこれまでの累積書込み容量に関する情報を含む
上記（１）から上記（５）のいずれか一に記載の仮想メモリシステム。
（７）上記仮想メモリ制御部は、
物理メモリ容量を拡張する容量を、データの書込み量に関する情報から、当該物理ページに発生する書換え回数を算出した結果によって決定し、
上記テーブルの情報は、
仮想ページに割り当てられた物理ページアドレスを管理するテーブル情報を含み、当該テーブル情報に、当該物理ページが不揮発性メモリにあるか否かを示す情報と、上記決定した物理ページを拡張した容量に関する情報を含む
上記（６）記載の仮想メモリシステム。
（８）仮想メモリシステムは、
物理ページ毎に現在までに発生した書込み容量を示す情報を保持し、
上記仮想メモリ制御部は、
上記内部イベントあるいはＯＳやアプリケーションからの指示を受けて、物理ページ間でデータを移動する処理を行う
上記（７）記載の仮想メモリシステム。
（９）上記仮想メモリ制御部は、
物理ページを拡張した容量部分にアクセスするように制御する機能を有する
上記（８）記載の仮想メモリシステム。
（１０）上記テーブルの情報は、上記不揮発性メモリに保存される
上記（６）から上記（９）のいずれか一に記載の仮想メモリシステム。
（１１）上記仮想メモリ制御部は、
上記不揮発性メモリの物理アドレス空間をページ単位で管理し、物理アドレス空間と仮想アドレス空間をマッピングし、アクセスのあった仮想アドレスを物理アドレスに変換する機能を有し、さらに、新しい物理ページを仮想ページに割り当てた、仮想ページに割り当てられた物理ページを開放する機能を含む
上記（１）から上記（１０）のいずれか一に記載の仮想メモリシステム。
（１２）上記仮想メモリ制御部は、
仮想ページと物理ページの対応を管理テーブルにより管理し、
未使用の物理ページが不足した場合に、すでに仮想ページに割り当て済みの物理ページの中から、パフォーマンスに与える影響が少ないと判断した物理ページを選択し、当該選択した物理ページのデータをストレージ上の専用の領域に書出すように制御する機能を有し、
上記管理テーブル上のストレージ上に退避された物理ページが割り当てられた仮想ページの属性には、メモリ上に存在しないことを示すフラグをセットする
上記（１１）記載の仮想メモリシステム。
（１３）上記仮想メモリ制御部は、
上記ストレージ上の専用領域に書き出した物理ページのデータが再度必要となった場合に、空き物理ページにそのデータを読込むように制御する機能を有し、
上記管理テーブル上のメモリ上に存在しないことを示すフラグをリセットする
上記（１２）記載の仮想メモリシステム。
（１４）上記仮想メモリ制御部の制御処理に従って上記不揮発性メモリにアクセスするメモリコントローラを有し、
上記仮想メモリ制御部は、
上記不揮発性メモリの書換え回数の上限に関する情報を上記メモリコントローラから取得する
上記（１）から上記（１３）のいずれか一に記載の仮想メモリシステム。
（１５）ランダムアクセス可能で、書換え回数に上限があり、物理アドレス空間へのアクセスが仮想アドレスを介して行われる不揮発性メモリの物理アドレス空間をページ単位で管理し、物理アドレス空間と仮想アドレス空間をマッピングし、アクセスのあった仮想アドレスを物理アドレスに変換するに際し、
仮想ページに書換えが発生すると、当該仮想ページに対する書込み量に関する情報に応じて当該仮想ページに割り当てる物理メモリ容量を拡張する
仮想メモリの制御方法。
（１６）ランダムアクセス可能で、書換え回数に上限があり、物理アドレス空間へのアクセスが仮想アドレスを介して行われる不揮発性メモリの物理アドレス空間をページ単位で管理し、物理アドレス空間と仮想アドレス空間をマッピングし、アクセスのあった仮想アドレスを物理アドレスに変換するに際し、
仮想ページに書換えが発生すると、当該仮想ページに対する書込み量に関する情報に応じて当該仮想ページに割り当てる物理メモリ容量を拡張する
仮想メモリの制御処理をコンピュータに実行させるプログラム。
【符号の説明】
【００８２】
１０，１０Ａ，１０Ｂ・・・仮想メモリシステム、２０・・・ＣＰＵ（仮想メモリ制御部）、２１・・・プロセッサユニット、２２・・・メモリ管理ユニット（ＭＭＵ）、２３・・・キャッシュメモリ、２４・・・トランスレーションルックアサイドバッファ（ＴＬＢ）、２５・・・バスインタフェース、２６・・・ＥＣＣ回路、３０・・・メモリコントローラ、４０・・・不揮発性ランダムアクセスメモリ、５０・・・システムバス。
【図１】
0005664347.tif 000003
【図２】
0005664347.tif 000004
【図３】
0005664347.tif 000005
【図４】
0005664347.tif 000006
【図５】
0005664347.tif 000007
【図６】
0005664347.tif 000008
【図７】
0005664347.tif 000009
【図８】
0005664347.tif 000010
【図９】
0005664347.tif 000011
【図１０】
0005664347.tif 000012
【図１１】
0005664347.tif 000013
【図１２】
0005664347.tif 000014
【図１３】
0005664347.tif 000015
【図１４】
0005664347.tif 000016
【図１５】
0005664347.tif 000017
【図１６】
0005664347.tif 000018
【図１７】
0005664347.tif 000019
【図１８】
0005664347.tif 000020