JP5664347B2 - 仮想メモリシステム、仮想メモリの制御方法、およびプログラム - Google Patents

仮想メモリシステム、仮想メモリの制御方法、およびプログラム Download PDF

Info

Publication number
JP5664347B2
JP5664347B2 JP2011047376A JP2011047376A JP5664347B2 JP 5664347 B2 JP5664347 B2 JP 5664347B2 JP 2011047376 A JP2011047376 A JP 2011047376A JP 2011047376 A JP2011047376 A JP 2011047376A JP 5664347 B2 JP5664347 B2 JP 5664347B2
Authority
JP
Japan
Prior art keywords
virtual
page
physical
address
memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2011047376A
Other languages
English (en)
Other versions
JP2012185609A (ja
Inventor
中西 健一
健一 中西
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sony Corp
Original Assignee
Sony Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sony Corp filed Critical Sony Corp
Priority to JP2011047376A priority Critical patent/JP5664347B2/ja
Priority to US13/372,615 priority patent/US9514056B2/en
Priority to CN201210043895.8A priority patent/CN102707899B/zh
Publication of JP2012185609A publication Critical patent/JP2012185609A/ja
Application granted granted Critical
Publication of JP5664347B2 publication Critical patent/JP5664347B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/202Non-volatile memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Memory System (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Description

本技術は、不揮発性で書換え回数に上限を持つランダムアクセス可能な不揮発性ランダムアクセスメモリに対応した仮想メモリシステム、仮想メモリの制御方法、およびプログラムに関するものである。
現在の仮想メモリシステムはMMU(Memory Management Unit)と呼ばれるメモリ管理ユニットと、オペレーティングシステムの機能として実装された仮想メモリ制御ソフトウェアにより形成されている。
このような構成を有する仮想メモリシステムは、揮発性メモリであるDRAMの物理メモリ空間を対象としたシステムとして、さまざまなシステムで使用されている。
仮想メモリシステムによって物理メモリ(物理アドレス)空間はページ単位に分割して管理され、メモリを必要とするアプリケーションは、仮想メモリシステムに対して必要とする仮想ページを使用する前にあらかじめ要求し確保する。これをデマンドページングと呼ぶ。
仮想メモリシステムにおいては、必要とするメモリ容量のみ確保されるため、限られた物理メモリ容量を効率よく使用できるだけでなく、物理メモリ空間へのアクセスはアプリケーションごとに独立した仮想アドレス空間を使用してアクセスされる。
このため、仮想メモリシステムは、物理アドレス空間上で非連続な物理ページの並びであったとしても、仮想アドレス空間上においては、連続した仮想ページ空間としてアクセスできるメリットがある。
また、もし実行するアプリケーションに対して物理メモリ空間の容量が不足した場合には、スワップアウト処理と呼ばれる、最も使用頻度が低いと判断した仮想ページに割り当てられた物理ページのデータをハードディスクなどのストレージ(スワップ領域)上に書き出す処理を行う。その後、その物理ページを未使用物理ページとして前記アプリケーションが要求する仮想アドレスに割り当てることで、物理メモリ空間の不足を補うことができる。
ストレージ上のスワップ領域に退避されたページのデータは、そのデータに再度アクセスが発生した際にその仮想アドレスに再び物理ページを割り当て、スワップ領域からデータを読み込む処理(スワップイン)を行うことで、再び仮想メモリとしてアクセス可能となる。
これらスワップアウト、スワップイン処理は発生時にストレージへのアクセス、メモリとストレージ間のデータ転送などが発生し、アプリケーションから見てシステムのパフォーマンスの一時的な低下を引き起こす。ただし、物理メモリ容量の制約を受けずにアプリケーションの実行を可能とするメリットもある。
特許文献1には、システムのパフォーマンスを改善する技術が提案されている。
この技術は、現状ではNANDフラッシュを代表とする不揮発性メモリを高速なストレージとして使用することで、コードやデータのロードや、上記スワップアウト、スワップインといったデマンドページングの処理を高速化し、システムパフォーマンスを改善する。
しかし、次世代メモリとして開発されているPCM、ReRAMといった不揮発性メモリデバイスは、NANDフラッシュと異なり、SRAMやDRAMのようにワード単位の高速ランダムアクセスが可能である特徴がある。
このような不揮発性ランダムアクセスメモリは、その不揮発性である特徴を活かし、NANDフラッシュよりも高速なストレージを構成する以外に、ワークメモリであるDRAMを置換えることで、低消費電力で高速なシステムを実現することができる。
特開2007−188499号公報
ところで、次世代の不揮発性ランダムアクセスメモリは、メモリセルへの書込み時にベリファイ処理を行い書込みエラーを検出する機能を持ち、そのエラー発生率をある基準以下に抑えるためには、書換え回数の上限以下で使用する必要がある。一方で、SRAMやDRAMのような揮発性メモリは書込みエラーが発生せず書換え回数の上限も持たない。このような次世代の不揮発性ランダムアクセスメモリによってSRAMやDRAMといった揮発性ランダムアクセスメモリの置換えを実現するためには、書換え回数に上限があることを踏まえてシステム構築する必要がある。
不揮発性メモリは書換え回数の増加とともにデータの保持特性が劣化するため、セルの書換え回数に制限を持っている。
揮発性メモリのように書換え回数に上限のないメモリを前提とした現在のシステムでは、不揮発性ランダムアクセスをそのままワークメモリとして使った場合、次のような不利益が生じる恐れがある。すなわち、不揮発性ランダムアクセスをそのままワークメモリとして使った場合、特定の領域に書換えが集中することによるデータエラーが発生し、システムの動作に致命的な影響を与える恐れが存在する。
現在のシステムでは揮発性ランダムアクセスメモリのリソースは仮想メモリシステムによって管理されている。
仮想メモリシステムが不揮発性ランダムアクセスメモリにも対応することによって、デマンドページングのような現在のシステムで有用な機能を実現しつつ、不揮発性であることによる消費電力の削減効果を発揮することができる。
具体的には、不揮発性ランダムアクセスメモリであれば、アクセスしないアドレス領域のメモリデバイスへの電源供給を停止できる。これにより、不揮発性ランダムアクセスメモリは同容量の揮発性メモリより低消費電力であり、またシステムの起動時や終了時に、メモリの状態を保存、再現するためにストレージにアクセスする必要もないため、さらにシステムの瞬間起動、瞬間終了が可能となる。
しかし、現状の仮想メモリシステムは、アプリケーションからメモリに対するアクセスを、仮想メモリアドレスを介して実現する仕組みである。
その結果、現状の仮想メモリシステムは、物理ページの割り当てはアプリケーションからの要求による順番によって決定され、さらにデータの書込みが特定の物理ページに集中することを管理制御する手段を持っていない。
また、物理ページへの書き込みアクセスを監視し、物理ページごとに書き換え回数を計測することは、アクセス性能に影響を与えずに実現することが非常に困難であり、また書き換え回数を保存する領域がデータ領域を圧迫する原因にもなると考えられる。
本技術は、書換え回数の制限のある不揮発性メモリに対するアクセスにおいてアプリケーションからは書込み制限を回避することが可能な仮想メモリシステム、仮想メモリの制御方法、およびプログラムを提供することにある。
本技術の第1の観点の仮想メモリシステムは、ランダムアクセス可能で、書換え回数に上限があり、物理アドレス空間へのアクセスが仮想アドレスを介して行われる不揮発性メモリと、上記不揮発性メモリの物理アドレス空間をページ単位で管理し、物理アドレス空間と仮想アドレス空間をマッピングした情報をテーブルとして保持し、そのテーブルを使用してアクセスのあった仮想アドレスを物理アドレスに変換する機能を含む仮想メモリ制御部と、を有し、上記仮想メモリ制御部は、書換えが発生する仮想ページに割り当てる物理メモリ容量を拡張する機能を含み、物理アドレスと仮想アドレスをページ単位ごとにマッピングし、書換えが発生する仮想ページに対して、当該仮想ページに対する書込み量に関する情報を基に、複数の物理ページを割り当てて物理メモリ容量を拡張し、上記テーブルは、仮想アドレスを物理アドレスに変換するための情報であって、仮想ページに割り当てられた物理ページアドレスを管理する情報を含み、上記仮想メモリ制御部は、仮想アドレスの第1の所定ビットを参照値として、ページディレクトリテーブルのエントリを特定し、当該第1の所定ビットが指定する仮想アドレス領域に対する物理ページのアドレスを管理するページテーブルにアクセスし、仮想アドレスの第2の所定ビットを参照値として、ページテーブルのエントリを特定し、該当する物理ページのアドレスを取得する
本技術の第2の観点の仮想メモリの制御方法は、ランダムアクセス可能で、書換え回数に上限があり、物理アドレス空間へのアクセスが仮想アドレスを介して行われる不揮発性メモリの物理アドレス空間をページ単位で管理し、物理アドレス空間と仮想アドレス空間をマッピングした情報をテーブルとして保持し、その仮想アドレスを物理アドレスに変換するための情報であって、仮想ページに割り当てられた物理ページアドレスを管理する情報を含むテーブルを使用して、アクセスのあった仮想アドレスを物理アドレスに変換するに際し、物理アドレスと仮想アドレスをページ単位ごとにマッピングし、書換えが発生する仮想ページに対して、当該仮想ページに対する書込み量に関する情報を基に、複数の物理ページを割り当てて物理メモリ容量を拡張し、仮想アドレスの第1の所定ビットを参照値として、ページディレクトリテーブルのエントリを特定し、当該第1の所定ビットが指定する仮想アドレス領域に対する物理ページのアドレスを管理するページテーブルにアクセスし、仮想アドレスの第2の所定ビットを参照値として、ページテーブルのエントリを特定し、該当する物理ページのアドレスを取得する
本技術の第3の観点の仮想メモリの制御方法は、ランダムアクセス可能で、書換え回数に上限があり、物理アドレス空間へのアクセスが仮想アドレスを介して行われる不揮発性メモリの物理アドレス空間をページ単位で管理し、物理アドレス空間と仮想アドレス空間をマッピングした情報をテーブルとして保持し、その仮想アドレスを物理アドレスに変換するための情報であって、仮想ページに割り当てられた物理ページアドレスを管理する情報を含むテーブルを使用して、アクセスのあった仮想アドレスを物理アドレスに変換するに際し、物理アドレスと仮想アドレスをページ単位ごとにマッピングし、書換えが発生する仮想ページに対して、当該仮想ページに対する書込み量に関する情報を基に、複数の物理ページを割り当てて物理メモリ容量を拡張し、仮想アドレスの第1の所定ビットを参照値として、ページディレクトリテーブルのエントリを特定し、当該第1の所定ビットが指定する仮想アドレス領域に対する物理ページのアドレスを管理するページテーブルにアクセスし、仮想アドレスの第2の所定ビットを参照値として、ページテーブルのエントリを特定し、該当する物理ページのアドレスを取得する仮想メモリの制御処理をコンピュータに実行させるプログラムである。
本技術によれば、書換え回数の制限のある不揮発性メモリに対するアクセスにおいてアプリケーションからのアクセス性能に影響を与えずに、書込み制限を回避することができる。
本第1の実施形態に係る不揮発性ランダムアクセスメモリ(NVRAM)を適用した仮想メモリシステムの構成を示す図である。 一般的な仮想アドレス空間と物理アドレス空間のマッピング例を示す図である。 本実施形態の仮想アドレス空間と物理アドレス空間のマッピング例を示す図である。 仮想メモリシステムでの仮想アドレスから物理アドレスへの変換の過程を示す図である。 本実施形態に係る物理ページ管理情報テーブルの例を示す図である。 一般的な物理ページ管理情報テーブルの例を示す図である。 一般的なページディレクトリテーブルのエントリの例を示す図である。 一般的なページテーブルのエントリの例を示す図である。 本実施形態に係るページディレクトリテーブルのエントリの例を示す図である。 本実施形態に係るページテーブルのエントリの例およびその仮想アドレスから物理アドレスを生成する過程を示す図である。 本実施形態の仮想メモリシステムが仮想ページに対して新たに物理ページを割り当てる際の処理を説明するためのフローチャートである。 本実施形態の仮想メモリシステムで、仮想ページのデータを書き換え回数の平均化のために容量拡張された物理ページ内で移動する処理を説明するためのフローチャートである。 本実施形態の仮想メモリシステムで仮想ページに割り当てられた物理ページを開放するときの処理を説明するためのフローチャートである。 本第2の実施形態に係る不揮発性ランダムアクセスメモリ(NVRAM)を適用した仮想メモリシステムの構成を示す図である。 ページテーブルを揮発性メモリ用と不揮発性メモリ用を独立に持つ場合の仮想メモリシステムでの仮想アドレスから物理アドレスへの変換の過程を示す図である。 図15の構成に対応する揮発性メモリのページテーブルエントリの例およびその仮想アドレスから物理アドレスを生成する過程を示す図である。 図15の構成に対応する不揮発性メモリのページテーブルエントリの例およびその仮想アドレスから物理アドレスを生成する過程を示す図である。 本第3の実施形態に係る不揮発性ランダムアクセスメモリ(NVRAM)を適用した仮想メモリシステムの構成を示す図である。
以下、本実施形態を図面に関連付けて説明する。
なお、説明は以下の順序で行う。
1.第1の実施形態(仮想メモリシステムの第1の構成例)
2.第2の実施形態(仮想メモリシステムの第2の構成例)
3.第3の実施形態(仮想メモリシステムの第3の構成例)
<1.第1の実施形態>
図1は、本第1の実施形態に係る不揮発性ランダムアクセスメモリ(NVRAM)を適用した仮想メモリシステムの構成を示す図である。
本仮想メモリシステム10は、仮想メモリ制御部としてのCPU20、メモリコントローラ(Memory Controller)30、不揮発性ランダムアクセスメモリ(NVRAM)40、およびシステムバス(System Bus)50を含んで構成される。
不揮発性ランダムアクセスメモリ40は、ランダムアクセス可能で、書換え回数に上限があり、その物理アドレス空間へのアクセスはCPU20の制御の下、仮想アドレス空間を介して行われる。
CPU20は、プロセッサユニット(Processor Unit)21、メモリ管理ユニット(MMU;Memory Management Unit)22、キャッシュメモリ23を有する。
CPU20は、トランスレーションルックアサイドバッファ(Translation Look-aside Buffer;TLB)24、およびバスインタフェースユニット(Bus Interface Unit)25を有する。
本実施形態に係る仮想メモリシステム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が使用するページディレクトリテーブル(Page Directory Table)、ページテーブル(Page Table)のエントリ(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内のブートローダ(Boot Loader)と呼ばれるプログラムを実行することでOS、さらにOSによってアプリケーションまで、その実行に必要とするプログラムコードとデータが、ハードディスクなどのストレージ上からワークメモリ上にロードされ、順次実行される。
ハードディスクのアクセス時間は数10msに対し、ワークメモリのDRAMは数10nsレベルと、そのアクセス時間のギャップは大きい。
NANDフラッシュを搭載したSSDの登場によりストレージのアクセス時間は数100μsまで改善されたが、いまだにDRAMとの間にはアクセス速度のギャップが存在しており、効率のよいCPUの動作を妨げる大きな要因となっている。
[一般的な仮想アドレス空間と物理アドレス空間のマッピング]
図2は、一般的な仮想アドレス空間と物理アドレス空間のマッピング例を示す図である。
一般的な仮想メモリシステムでは、使用するメモリはSRAMやDRAMのように書込み回数の上限を持たない揮発性メモリである。
仮想アドレス空間VASは、物理アドレス空間PASよりも大きなアドレス空間であり、ページPGと呼ばれる一般的には4Kbyteのサイズからなる単位領域ごとに仮想アドレスと物理アドレスがマッピングされる。1つの仮想ページVPGは1つの物理ページPPGに割り当てられ、そのサイズは一致している。
たとえば、図2のリード領域(Read Area)RA1は読出し専用の領域であり、ライト領域(Write Area)WA1、WA2は読出しと書込みを行う領域である。これら3つの領域では割り当てられた仮想ページVPGと物理ページPPGの数は一致している。
[本実施形態の仮想アドレス空間と物理アドレス空間のマッピング]
図3は、本実施形態の仮想アドレス空間と物理アドレス空間のマッピング例を示す図である。
ここで使用するメモリは不揮発性ランダムアクセスメモリであり、書換え回数の上限が存在するメモリである。
本実施形態の仮想メモリシステム10は、書換えが発生する仮想ページに対して、複数の物理ページを割り当てることにより、書換え回数の制限を回避することを特徴としている。
たとえば、図3のリード領域(Read Area)RA11は読出し専用の領域であり、ライト領域(Write Area)WA11は読出しと書込みを行う領域である。これら2つの領域では割り当てられた仮想ページVPGと物理ページPPGの数は一致している。
一方のライト領域(Write Area)WA12は仮想メモリ空間でのサイズが2ページであるのに対して、物理メモリ空間では4ページとなっている。
ライト領域(Write Area)WA11とライト領域(Write Area)WA12の違いは、その領域に発生する書込みデータの量の違いから来る書換え回数の違いである。ライト領域(Write Area)WA12はライト領域(Write Area)WA11の2倍の書換え回数が発生することを意味している。
本実施形態では、仮想ページVPGに対する書込み量を示す情報が仮想メモリシステム10に対して提供されており、その書込み量に関する情報に基づき、割り当てるべき物理ページPPGの数を算出し決定する機能を持っている。
[仮想メモリシステムでの仮想アドレスから物理アドレスへの変換の過程]
図4は、仮想メモリシステムでの仮想アドレスから物理アドレスへの変換の過程を示す図である。
このアドレス変換には第2の管理テーブルとして、ページディレクトリテーブル(Page Directory Table)PDT11とページテーブル(Page Table)PT11の2つのテーブルが使用される。
ページディレクトリテーブルPDT11は仮想アドレスVAの上位ビット(Bit)UBTを参照値として、ページディレクトリテーブルPDT11のエントリ(Entry)PDTEを特定する。そして、その上位ビットUBTが指定する仮想アドレス領域に対する物理ページPPGのアドレスを管理するページテーブルPT11にアクセスする。
次に、仮想アドレスVAの中位MBTを参照値として、ページテーブルPT11のエントリ(Entry)PTEを特定し、該当する物理ページPPGのアドレスを取得する。残った下位ビットLBTが示すアドレスをオフセットとして、最終的なデータの物理アドレスPA(Physical Address)が決まる。
このようにページディレクトリテーブル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が存在する先頭物理アドレスを示すページテーブルベースアドレス(Page Table Base Address)PTBAを含む。
ページディレクトリテーブルエントリPDTE1は、ページデーブルベースアドレスPTBAとその他の情報ビットにより形成される。
ページレベルキャッシュディセブル(Page Level Cache Disable)PCDビットは、このビットが1の場合に、このエントリ(Entry)が示す仮想アドレス領域は上記CPU20の持つキャッシュ(Cache)メモリ23に保存されないことを示す。
ページレベルキャッシュライトスルー(Page Level Cache Write Through)PCWTビットは、前記PCDビットが0であり、後に示すR/W(Read/Write)ビットが1であった場合に、次のことを示す。
すなわち、ページレベルキャッシュライトスルーPCWTビットが1である場合は、このエントリ(Entry)の示す仮想アドレス領域への書込みはCPU20の持つキャッシュメモリ23に保存され、かつ仮想アドレス領域に対しても書き込まれることを示す。
つまり、この領域に対する書込みはキャッシュメモリ23に対して行われず直接このエントリ(Entry)が示したページテーブルPT11によって指示される物理ページ領域に書込まれることを示す。
PCWTビットが0であった場合には、ライトバック(Write Back)方式であることを示し、このエントリ(Entry)が示す仮想アドレス領域への書込みはCPU20の持つキャッシュメモリ23に対して行われることを示す。
R/Wビットは、そのビットが1であった場合には、そのエントリ(Entry)が示す仮想アドレス領域に対してリード(Read)アクセスまたはライト(Write)アクセスが行われることを示している。
R/Wビットは、そのビットが0であった場合には、リードオンリー(Read Only)であることを示している。
プレゼンス(Presence)Pビットは、このビットPが1であった場合は、そのエントリ(Entry)が示す仮想アドレス領域のデータがメモリ上に存在することを示す。
プレゼンスPビットが0であった場合には、そのデータはスワップアウトされストレージ上に保存されており、再利用するには新たな物理アドレス空間を割り当て、データをストレージから読み込むスワップインの処理が必要であることを示している。
[一般的なページテーブルのエントリ(Entry)の例]
図8は、一般的なページテーブルのエントリ(Entry)の例を示す図である。
図8のページテーブルエントリPTE1は、そのエントリ(Entry)の示す仮想ページに割り当てられた物理ページの先頭アドレスを示すページベースアドレス(Page Base Address)PBAとその他の情報ビットにより形成される。
ダーティビット(Dirty Bit)DBビットは、そのビットが1であった場合は、そのエントリ(Entry)の仮想ページVPGに割り当てられた物理ページPPGに対して書込みが発生したことを示す。
それ以外の情報ビットは図7のページディレクトリテーブルエントリPDTE1と同様である。
[本実施形態に係るページディレクトリテーブルのエントリの例]
図9は、本実施形態に係るページディレクトリテーブルのエントリの例を示す図である。
図9のページディレクトリテーブルエントリPDTE11は、図7のエントリにNVM(Non-Volatile Memory)ビットが情報ビットとして付加されている。
NVMビットは、そのビット1である場合にはこのエントリ(Entry)が示すページテーブルPT11と仮想アドレス領域に割り当てられた物理ページPPGはすべて不揮発性ランダムアクセスメモリ40であり、書換え回数に上限を持つメモリによる物理ページ空間であることを示す。
[本実施形態に係るページテーブルのエントリの例]
図10(A)および(B)は、本実施形態に係るページテーブルのエントリの例およびその仮想アドレスから物理アドレスを生成する過程を示す図である。
図10(A)のページテーブルエントリPTE11は、図8のエントリに3つの情報ビットが付加されている。
ページテーブルエントリPTE11は、このエントリ(Entry)の示す仮想ページVPGに対して割り当てられた物理ページ数を示すページ数(Page Number)PNビットを有する。
さらに、ページテーブルエントリPTE11は、割り当てられた物理ページの中で、現在使用中のページを示すページ番号(Current Page Number)CPNビットを有し、ページベースアドレスPBAはページ番号CPNで示された物理ページのアドレスを示す。
さらに、ページテーブルエントリPTE11は、NVM(Non-Volatile Memory)ビットを有する。
上記PNビットおよびCPNビットの値は、NVMビットが1であるときに有効である。
また、このNVMビットが0である場合にはこの仮想ページに割り当てられたメモリが揮発性メモリであることを示す。
物理アドレスPAは、図10(B)に示すように、ページテーブルエントリPTE11のページベースアドレスPBAと仮想アドレスVAのオフセットOFSTの論理和(OR)をとることにより生成される。
[仮想ページに対して新たに物理ページを割り当てる際の処理]
図11は、本実施形態の仮想メモリシステムが仮想ページに対して新たに物理ページを割り当てる際の処理を説明するためのフローチャートである。
第1のステップST1において、物理ページ管理情報から、現在未使用である物理ページアドレスを取得し、第2のステップST2でその物理ページの現在までの書込み容量に関する情報を取得する。
第3のステップST3では、下記の計算式から要求された仮想ページ領域に必要となる物理ページ数を算出する。
Figure 0005664347
本実施形態の仮想メモリシステム10では、不揮発性ランダムアクセスメモリ40の物理ページを要求する際に、その領域に対するデータの総書込み容量に関する情報TWAMを渡すことを特徴とする。
本実施形態の仮想メモリシステム10は、総書込み容量TWAMと、不揮発性メモリの書換え回数の上限値ULWNと、新たに割り当てる物理ページの現在までの総書込み容量CWAMから必要な物理ページ数NPNを算出する。
第4のステップST4で、物理ページ数が、要求するページ数よりも大きくなった場合には、再度その割り当てが可能となる物理ページを探索する。
割り当て可能な物理ページが見つかれば、第5のステップST5でその物理ページ領域を未使用から使用状態に変更して物理ページ管理情報を更新する。第6のステップST6で、さらにその物理ページの先頭アドレスをページテーブルエントリ(Page Table Entry)に登録する。
ページ数の算出について具体例を示す。
仮想ページ、物理ページが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の構成の場合のページテーブルエントリ(Page Table Entry)PTEの構成を図16および図17に示す。
図16(A)および(B)は、図15の構成に対応する揮発性メモリのページテーブルエントリの例およびその仮想アドレスから物理アドレスを生成する過程を示す図である。
ページディレクトリテーブルエントリPDTE11のNVMビットが0であった場合には、そのエントリ(Entry)が指すページテーブルベースアドレスPTBAのページテーブルPT11は、このページテーブルエントリPTE11により形成される。
もしページテーブルの一部がNVM(Non-Volatile Memory)であった場合には、そのページテーブルエントリPTE11のNVMビットが1に設定される。ページベースアドレスPBAは図16(A)に示すページテーブルエントリPTE11から成るページテーブル(Page Table)を指す。
この場合、物理アドレスPAは、図1(B)に示すように、ページテーブルエントリPTE11のページベースアドレスPBAと仮想アドレスVAのオフセットOFSTの論理和(OR)をとることにより生成される。

図17(A)および(B)は、図15の構成に対応する不揮発性メモリのページテーブルエントリの例およびその仮想アドレスから物理アドレスを生成する過程を示す図である。
ページディレクトリテーブルエントリPDTE11のNVMビットが1であった場合には、そのエントリ(Entry)が指すページテーブルベースアドレスPTBAのページテーブルは、このページテーブルエントリPTE12により形成される。このページテーブルエントリPTE12は拡張サイズ(Extended Size)ビットが付加されている。
拡張サイズ(Extended Size)は登録された物理ページが、仮想ページよりも拡張されているサイズを示す値である。
したがって、ページベースアドレスPBAは、常にページ境界のアドレスにはならないため、図16(B)に示すように、物理アドレス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)ランダムアクセス可能で、書換え回数に上限があり、物理アドレス空間へのアクセスが仮想アドレスを介して行われる不揮発性メモリの物理アドレス空間をページ単位で管理し、物理アドレス空間と仮想アドレス空間をマッピングし、アクセスのあった仮想アドレスを物理アドレスに変換するに際し、
仮想ページに書換えが発生すると、当該仮想ページに対する書込み量に関する情報に応じて当該仮想ページに割り当てる物理メモリ容量を拡張する
仮想メモリの制御処理をコンピュータに実行させるプログラム。
10,10A,10B・・・仮想メモリシステム、20・・・CPU(仮想メモリ制御部)、21・・・プロセッサユニット、22・・・メモリ管理ユニット(MMU)、23・・・キャッシュメモリ、24・・・トランスレーションルックアサイドバッファ(TLB)、25・・・バスインタフェース、26・・・ECC回路、30・・・メモリコントローラ、40・・・不揮発性ランダムアクセスメモリ、50・・・システムバス。

Claims (16)

  1. ランダムアクセス可能で、書換え回数に上限があり、物理アドレス空間へのアクセスが仮想アドレスを介して行われる不揮発性メモリと、
    上記不揮発性メモリの物理アドレス空間をページ単位で管理し、物理アドレス空間と仮想アドレス空間をマッピングした情報をテーブルとして保持し、そのテーブルを使用してアクセスのあった仮想アドレスを物理アドレスに変換する機能を含む仮想メモリ制御部と、を有し、
    上記仮想メモリ制御部は、
    書換えが発生する仮想ページに割り当てる物理メモリ容量を拡張する機能を含み、
    物理アドレスと仮想アドレスをページ単位ごとにマッピングし、
    書換えが発生する仮想ページに対して、当該仮想ページに対する書込み量に関する情報を基に、複数の物理ページを割り当てて物理メモリ容量を拡張し、
    上記テーブルは、
    仮想アドレスを物理アドレスに変換するための情報であって、仮想ページに割り当てられた物理ページアドレスを管理する情報を含み、
    上記仮想メモリ制御部は、
    仮想アドレスの第1の所定ビットを参照値として、ページディレクトリテーブルのエントリを特定し、当該第1の所定ビットが指定する仮想アドレス領域に対する物理ページのアドレスを管理するページテーブルにアクセスし、仮想アドレスの第2の所定ビットを参照値として、ページテーブルのエントリを特定し、該当する物理ページのアドレスを取得する
    仮想メモリシステム。
  2. 上記仮想メモリ制御部は、
    仮想アドレスの上位ビットを参照値として、ページディレクトリテーブルのエントリを特定し、当該上位ビットが指定する仮想アドレス領域に対する物理ページのアドレスを管理するページテーブルにアクセスし、仮想アドレスの中位ビットを参照値として、ページテーブルのエントリを特定し、該当する物理ページのアドレスを取得し、仮想アドレスの下位ビットが示すアドレスをオフセットとして、データの物理アドレスを決定する
    請求項1記載の仮想メモリシステム。
  3. 上記仮想メモリ制御部は、
    仮想ページに対して物理ページを割り当てる要求と、当該要求する領域に対するデータの書込み量に関する情報を受け取り、受け取った書込み量に関する情報を基に、仮想ページに割り当てる物理メモリ容量を拡張する
    請求項1または2記載の仮想メモリシステム。
  4. 上記仮想メモリ制御部は、
    物理メモリ容量を拡張する容量を、データの書込み量に関する情報から、当該物理ページに発生する書換え回数を算出した結果によって決定する
    請求項1から3のいずれか一に記載の仮想メモリシステム。
  5. 上記仮想メモリ制御部は、
    割り当てた物理ページ間の書込み回数を平均化する機能を含む
    請求項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. ランダムアクセス可能で、書換え回数に上限があり、物理アドレス空間へのアクセスが仮想アドレスを介して行われる不揮発性メモリの物理アドレス空間をページ単位で管理し、物理アドレス空間と仮想アドレス空間をマッピングした情報をテーブルとして保持し、その仮想アドレスを物理アドレスに変換するための情報であって、仮想ページに割り当てられた物理ページアドレスを管理する情報を含むテーブルを使用して、アクセスのあった仮想アドレスを物理アドレスに変換するに際し、
    物理アドレスと仮想アドレスをページ単位ごとにマッピングし、
    書換えが発生する仮想ページに対して、当該仮想ページに対する書込み量に関する情報を基に、複数の物理ページを割り当てて物理メモリ容量を拡張し、
    仮想アドレスの第1の所定ビットを参照値として、ページディレクトリテーブルのエントリを特定し、当該第1の所定ビットが指定する仮想アドレス領域に対する物理ページのアドレスを管理するページテーブルにアクセスし、仮想アドレスの第2の所定ビットを参照値として、ページテーブルのエントリを特定し、該当する物理ページのアドレスを取得する
    仮想メモリの制御方法。
  16. ランダムアクセス可能で、書換え回数に上限があり、物理アドレス空間へのアクセスが仮想アドレスを介して行われる不揮発性メモリの物理アドレス空間をページ単位で管理し、物理アドレス空間と仮想アドレス空間をマッピングした情報をテーブルとして保持し、その仮想アドレスを物理アドレスに変換するための情報であって、仮想ページに割り当てられた物理ページアドレスを管理する情報を含むテーブルを使用して、アクセスのあった仮想アドレスを物理アドレスに変換するに際し、
    物理アドレスと仮想アドレスをページ単位ごとにマッピングし、
    書換えが発生する仮想ページに対して、当該仮想ページに対する書込み量に関する情報を基に、複数の物理ページを割り当てて物理メモリ容量を拡張し、
    仮想アドレスの第1の所定ビットを参照値として、ページディレクトリテーブルのエントリを特定し、当該第1の所定ビットが指定する仮想アドレス領域に対する物理ページのアドレスを管理するページテーブルにアクセスし、仮想アドレスの第2の所定ビットを参照値として、ページテーブルのエントリを特定し、該当する物理ページのアドレスを取得する
    仮想メモリの制御処理をコンピュータに実行させるプログラム。
JP2011047376A 2011-03-04 2011-03-04 仮想メモリシステム、仮想メモリの制御方法、およびプログラム Expired - Fee Related JP5664347B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2011047376A JP5664347B2 (ja) 2011-03-04 2011-03-04 仮想メモリシステム、仮想メモリの制御方法、およびプログラム
US13/372,615 US9514056B2 (en) 2011-03-04 2012-02-14 Virtual memory system, virtual memory controlling method, and program
CN201210043895.8A CN102707899B (zh) 2011-03-04 2012-02-24 虚拟存储器***、虚拟存储器控制方法和程序

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2011047376A JP5664347B2 (ja) 2011-03-04 2011-03-04 仮想メモリシステム、仮想メモリの制御方法、およびプログラム

Publications (2)

Publication Number Publication Date
JP2012185609A JP2012185609A (ja) 2012-09-27
JP5664347B2 true JP5664347B2 (ja) 2015-02-04

Family

ID=46754022

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011047376A Expired - Fee Related JP5664347B2 (ja) 2011-03-04 2011-03-04 仮想メモリシステム、仮想メモリの制御方法、およびプログラム

Country Status (3)

Country Link
US (1) US9514056B2 (ja)
JP (1) JP5664347B2 (ja)
CN (1) CN102707899B (ja)

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9003223B2 (en) * 2012-09-27 2015-04-07 International Business Machines Corporation Physical memory fault mitigation in a computing environment
US9274839B2 (en) * 2012-09-27 2016-03-01 Intel Corporation Techniques for dynamic physical memory partitioning
KR102055617B1 (ko) * 2012-10-17 2019-12-13 한국전자통신연구원 운영 체제에서 수행되는 프로세스의 가상 주소 공간을 확장하는 방법 및 시스템
EP2936494B1 (en) * 2012-12-19 2019-07-03 Hewlett-Packard Enterprise Development LP Nvram path selection
JP6125300B2 (ja) * 2013-04-08 2017-05-10 東芝メディカルシステムズ株式会社 医用画像表示装置及び医用画像提供システム
US10114758B2 (en) * 2013-09-13 2018-10-30 Nvidia Corporation Techniques for supporting for demand paging
CN104516822B (zh) * 2013-09-29 2018-01-23 华为技术有限公司 一种内存访问方法和设备
JP6194764B2 (ja) * 2013-11-08 2017-09-13 富士通株式会社 情報処理装置、制御方法、および制御プログラム
KR102211865B1 (ko) * 2014-05-20 2021-02-04 삼성전자주식회사 불휘발성 메모리 시스템 및 메모리 컨트롤러의 동작 방법
CN110931052B (zh) 2014-06-24 2021-09-28 苹果公司 音乐正在播放用户界面
JP6582367B2 (ja) 2014-07-18 2019-10-02 富士通株式会社 情報処理装置、情報処理装置の制御方法および情報処理装置の制御プログラム
CN105487969B (zh) * 2014-10-09 2018-08-14 上海华虹集成电路有限责任公司 智能卡仿真器
RU2580016C1 (ru) * 2014-10-17 2016-04-10 Закрытое акционерное общество "Лаборатория Касперского" Способ передачи управления между областями памяти
US9542333B2 (en) * 2014-12-04 2017-01-10 Qualcomm Incorporated Systems and methods for providing improved latency in a non-uniform memory architecture
US20160246715A1 (en) * 2015-02-23 2016-08-25 Advanced Micro Devices, Inc. Memory module with volatile and non-volatile storage arrays
CN104657153B (zh) * 2015-03-19 2017-10-17 哈尔滨工业大学 一种基于签名技术的硬件事务内存***
US10126985B2 (en) * 2015-06-24 2018-11-13 Intel Corporation Application driven hardware cache management
US20170220252A1 (en) * 2016-01-29 2017-08-03 Faraday&Future Inc. Flash emulated eeprom wrapper
US20180024938A1 (en) * 2016-07-21 2018-01-25 Advanced Micro Devices, Inc. Allocating physical pages to sparse data sets in virtual memory without page faulting
US10782908B2 (en) 2018-02-05 2020-09-22 Micron Technology, Inc. Predictive data orchestration in multi-tier memory systems
US11099789B2 (en) 2018-02-05 2021-08-24 Micron Technology, Inc. Remote direct memory access in multi-tier memory systems
US11416395B2 (en) * 2018-02-05 2022-08-16 Micron Technology, Inc. Memory virtualization for accessing heterogeneous memory components
KR20200014964A (ko) * 2018-08-02 2020-02-12 삼성전자주식회사 버츄얼 메모리 영역을 제공하는 스토리지 장치, 이를 포함하는 전자 시스템 및 전자 시스템의 동작 방법
KR20200022118A (ko) * 2018-08-22 2020-03-03 에스케이하이닉스 주식회사 데이터 저장 장치 및 그 동작 방법
US11954026B1 (en) * 2018-09-18 2024-04-09 Advanced Micro Devices, Inc. Paging hierarchies for extended page tables and extended page attributes
CN109696878B (zh) * 2019-01-03 2020-10-02 中电智能科技有限公司 基于多缓冲区的控制器
US10852949B2 (en) 2019-04-15 2020-12-01 Micron Technology, Inc. Predictive data pre-fetching in a data storage device
CN112148203B (zh) * 2019-06-27 2023-12-05 龙芯中科技术股份有限公司 存储器管理方法、装置、电子设备及存储介质
CN114218153B (zh) * 2021-12-06 2023-11-14 海飞科(南京)信息技术有限公司 用于存储管理的方法、介质、程序产品、***和装置
CN115757260B (zh) * 2023-01-09 2023-04-14 摩尔线程智能科技(北京)有限责任公司 数据交互方法、图形处理器及图形处理***
CN115934002B (zh) * 2023-03-08 2023-08-04 阿里巴巴(中国)有限公司 固态硬盘的访问方法、固态硬盘、存储***及云服务器
CN116010113B (zh) * 2023-03-27 2023-08-15 紫光同芯微电子有限公司 用于管理智能卡内存的方法及智能卡

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69021143T2 (de) * 1989-06-28 1996-02-29 Ibm Verfahren zur wirksamen Verwendung von auswechselbaren Aufzeichnungsmedien für Daten.
JPH04218842A (ja) * 1990-04-11 1992-08-10 Hitachi Ltd プログラムの再実行方法
JPH0812638B2 (ja) * 1993-05-15 1996-02-07 日本電気株式会社 ページテーブル非常駐化制御装置
US5802341A (en) * 1993-12-13 1998-09-01 Cray Research, Inc. Method for the dynamic allocation of page sizes in virtual memory
JPH10289153A (ja) * 1997-04-11 1998-10-27 Ricoh Co Ltd 主記憶管理方法および装置
JP2004362464A (ja) * 2003-06-06 2004-12-24 Sony Corp 不揮発メモリを利用したコンピュータシステム
US7269708B2 (en) * 2004-04-20 2007-09-11 Rambus Inc. Memory controller for non-homogenous memory system
KR100772863B1 (ko) 2006-01-13 2007-11-02 삼성전자주식회사 요구 페이징 기법을 적용한 시스템에서 페이지 교체 수행시간을 단축시키는 방법 및 장치
JP4863749B2 (ja) * 2006-03-29 2012-01-25 株式会社日立製作所 フラッシュメモリを用いた記憶装置、その消去回数平準化方法、及び消去回数平準化プログラム
CN100470506C (zh) * 2007-06-08 2009-03-18 马彩艳 基于sector访问的flash存储器的存储管理方法
JP4867892B2 (ja) * 2007-11-01 2012-02-01 日本電気株式会社 メモリ制御装置、システム、プログラム、および、方法
JP2009301680A (ja) * 2008-06-17 2009-12-24 Panasonic Corp 半導体記憶装置及びホスト装置
JP5302582B2 (ja) * 2008-07-09 2013-10-02 株式会社日立製作所 上位装置から指定されるデバイスに関する記憶容量を変更するストレージシステム及び方法
US9170756B2 (en) * 2009-01-29 2015-10-27 Lsi Corporation Method and system for dynamic storage tiering using allocate-on-write snapshots
KR20100091544A (ko) * 2009-02-10 2010-08-19 삼성전자주식회사 메모리 시스템 및 그 마모도 관리 방법
US8589700B2 (en) * 2009-03-04 2013-11-19 Apple Inc. Data whitening for writing and reading data to and from a non-volatile memory

Also Published As

Publication number Publication date
CN102707899A (zh) 2012-10-03
US20120226850A1 (en) 2012-09-06
US9514056B2 (en) 2016-12-06
JP2012185609A (ja) 2012-09-27
CN102707899B (zh) 2017-06-30

Similar Documents

Publication Publication Date Title
JP5664347B2 (ja) 仮想メモリシステム、仮想メモリの制御方法、およびプログラム
JP7115899B2 (ja) ハイブリッドメモリにおける書き込み及びフラッシュ支援のためのメモリモジュール及びその動作方法
US9910602B2 (en) Device and memory system for storing and recovering page table data upon power loss
US8612666B2 (en) Method and system for managing a NAND flash memory by paging segments of a logical to physical address map to a non-volatile memory
KR101612922B1 (ko) 메모리 시스템 및 메모리 시스템 관리 방법
US8612692B2 (en) Variable write back timing to nonvolatile semiconductor memory
KR101713051B1 (ko) 하이브리드 메모리 시스템, 및 그 관리 방법
JP6118285B2 (ja) キャッシュメモリシステムおよびプロセッサシステム
CN107818052B (zh) 内存访问方法及装置
US20110161597A1 (en) Combined Memory Including a Logical Partition in a Storage Memory Accessed Through an IO Controller
US20090235014A1 (en) Storage device and computing system
JP2017138852A (ja) 情報処理装置、記憶装置およびプログラム
US8645612B2 (en) Information processing device and information processing method
US10031854B2 (en) Memory system
JP2012033002A (ja) メモリ管理装置およびメモリ管理方法
CN108595349B (zh) 大容量存储设备的地址转换方法与装置
US10430346B2 (en) DDR storage adapter
JP6027562B2 (ja) キャッシュメモリシステムおよびプロセッサシステム
JP2016085677A (ja) メモリ管理方法、メモリ管理プログラム及び情報処理装置
JP2011186563A (ja) メモリ管理装置およびメモリ管理方法
JP2011186558A (ja) メモリ管理装置及び方法
JP2010191672A (ja) データ記憶システム
JP7118827B2 (ja) 情報処理装置、メモリ制御方法およびプログラム
JP2011186559A (ja) メモリ管理装置
JP2004355187A (ja) 仮想メモリ・システム、仮想メモリのアドレス管理方法、並びにアドレス変換テーブル生成装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140127

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140731

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140819

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20141014

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20141111

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20141124

R151 Written notification of patent or utility model registration

Ref document number: 5664347

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees