(57)【要約】【課題】  ＮＶＲＡＭを含むメモリシステム及びその磨耗度管理方法を提供する。【解決手段】  一実施形態によるＮＶＲＡＭの仮想アドレス及び物理アドレスのマッピング情報を含むページテーブルで、ページテーブルのエントリーは、ページの磨耗度を表わす寿命情報を含む。寿命情報は、ページについての残りの書き込み回数情報であり得る。各ページにデータが書き込まれる度に、書き込まれるページに対応するページテーブルエントリーに記載の寿命情報に含まれた各ページについての残りの書き込み回数情報を指示する値が減少する。【選択図】      図４
2010186477.tif 000002
【特許請求の範囲】
【請求項１】
ＮＶＲＡＭを含むメインメモリと、
前記メインメモリを制御する制御部と、を含み、
前記制御部は、前記ＮＶＲＡＭの仮想アドレス及び物理アドレスのマッピング情報を含むページテーブルを管理し、前記ページテーブルのエントリーは、ページの磨耗度を表わす寿命情報を含むことを特徴とするメモリシステム。
【請求項２】
前記寿命情報は、ページについての残りの書き込み回数情報を表わし、
前記制御部は、前記各ページにデータが書き込まれる度に、前記書き込まれるページに対応するページテーブルエントリーに記載の残りの書き込み回数情報を指示する値を減少させることを特徴とする請求項１に記載のメモリシステム。
【請求項３】
前記制御部によって制御される不揮発性メモリをさらに含み、
前記制御部は、電源をオフにする動作前に、各ページの寿命情報を前記不揮発性メモリに保存し、ブーティング時に、前記不揮発性メモリに保存された書き込み回数を復元し、前記各ページの寿命情報に基づいて、前記メインメモリに対するメモリ割り当てを行うことを特徴とする請求項１に記載のメモリシステム。
【請求項４】
前記制御部は、磨耗されたページをブラックリストに登録して管理し、電源をオンにする動作前に、前記ブラックリストを前記不揮発性メモリに保存し、ブーティング時に、前記不揮発性メモリに保存されたブラックリストを復元して利用することを特徴とする請求項１に記載のメモリシステム。
【請求項５】
前記制御部は、書き込み回数が臨界値以上を超えて耐久限度に到達されたページに書き込みが発生すれば、ページフォールトを発生させ、ページフォールトが発生したページのコンテンツを他のフリーページにコピーし、前記ページフォールトが発生したページの物理アドレスとマッピングされていた仮想アドレスが、新たに割り当てしたページに対する物理アドレスとマッピングされるようにページテーブルを変更することを特徴とする請求項１に記載のメモリシステム。
【請求項６】
前記制御部は、書き込み回数が臨界値以上を超えて耐久限度に到達されたページに書き込みが発生すれば、ページフォールトを発生させ、ページフォールトが発生したページにメモリ割り当てが行われないように制御することを特徴とする請求項１に記載のメモリシステム。
【請求項７】
前記制御部は、バイナリーツリー資料構造に基づいたバディ割り当てアルゴリズムを用いてメモリを割り当てる場合、バイナリーツリー資料構造上の一つのノードにページフォールトが発生すれば、前記ページフォールトが発生したノード及び前記ページフォールトが発生したノードの少なくとも一つの上位ノードをマーキングし、
前記少なくとも一つのノードの大きさによるページ割り当てが要請されて連続空間を割り当てしなければならない場合、前記マーキングされたノードに対応するページは割り当てられないようにすることを特徴とする請求項６に記載のメモリシステム。
【請求項８】
前記ページテーブルは、ページ単位より大きなスーパーセクション単位で仮想アドレスに対応する物理アドレスを管理する第１階層ページテーブル及び前記ページ単位で仮想アドレスに対応する物理アドレスを管理する第２階層ページテーブルを含み、
前記第１階層ページテーブルのエントリーは、前記各スーパーセクションの残りの書き込み回数情報を含み、
前記第２階層ページテーブルのエントリーは、当該ページの残りの書き込み回数情報を含むことを特徴とする請求項１に記載のメモリシステム。
【請求項９】
前記ページテーブルは、ページ単位で仮想アドレスに対応する物理アドレス情報を含む第２階層ページテーブルエントリーの位置を指示する第１階層ページテーブル及び前記第２階層ページテーブルを含み、
前記第２階層ページテーブルエントリーは、当該ページの残りの書き込み回数情報を含むことを特徴とする請求項１に記載のメモリシステム。
【請求項１０】
前記ページテーブルエントリーは、前記ページテーブルエントリーに含まれた値の種類を表わす識別子情報を含み、
前記識別子情報は、前記ページテーブルエントリーが、寿命情報が保存された他のメモリの保存位置を指示するポインター情報を表わすか、または前記寿命情報自体を表わすかを区別するための情報であることを特徴とする請求項１に記載のメモリシステム。
【請求項１１】
一つのページが、２つ以上のプロセスによって共有される場合、前記寿命情報は、前記共有されるページの寿命情報を保存する他のメモリのポインター情報を表わし、
一つのページが、一つのプロセスによってのみ使われる場合、前記寿命情報は、前記寿命情報自体を表わすことを特徴とする請求項１０に記載のメモリシステム。
【請求項１２】
前記制御部は、２つ以上のプロセスによって共有されたページが共有されない場合、前記寿命情報が表わす前記ポインターが指示している他のメモリに保存された寿命情報を前記共有されたページのページテーブルエントリーの寿命情報を記録した寿命フィールドにコピーし、
共有されていないページが２つ以上のプロセスによって共有される場合、前記共有されていないページの寿命フィールドの値を他のメモリの所定の位置にコピーし、前記寿命フィールドには、前記コピーされた位置を指示するポインター情報を記録することを特徴とする請求項１１に記載のメモリシステム。
【請求項１３】
ＮＶＲＡＭを含むメインメモリと、
前記メインメモリを制御する制御部と、を含むメモリシステムの磨耗度管理方法であって、
前記ＮＶＲＡＭの仮想アドレスと物理アドレスのマッピング情報を含むページテーブルエントリーは、ページの磨耗度を表わす寿命情報を含み、
前記各ページにデータが書き込まれる度に、前記書き込まれるページに対応するページテーブルエントリーに記載の前記寿命情報に含まれた残りの書き込み回数情報を指示する値を減少させることで磨耗度を管理することを特徴とする方法。
【請求項１４】
電源をオフにする動作前に、各ページの寿命情報を前記不揮発性メモリに保存する段階と、
ブーティング時に、前記不揮発性メモリに保存された書き込み回数を復元する段階と、
前記復元された各ページの寿命情報に基づいてメモリを割り当てる段階と、
をさらに含むことを特徴とする請求項１３に記載の方法。
【請求項１５】
前記残りの書き込み回数情報が臨界値以下である磨耗されたページをブラックリストに登録して管理する段階をさらに含むことを特徴とする請求項１３に記載の方法。
【請求項１６】
書き込み回数が臨界値以上を超えたページに書き込みが発生すれば、ページフォールトを発生させる段階と、
ページフォールトが発生したページの内容を他のフリーページにコピーする段階と、
前記ページフォールトが発生したページの物理アドレスとマッピングされていた仮想アドレスが、新たに割り当てしたページに対する物理アドレスとマッピングされるようにページテーブルを変更する段階と、
を含むことを特徴とする請求項１３に記載の方法。
【請求項１７】
前記寿命情報に基づいてメモリを割り当てる段階をさらに含み、
前記メモリを割り当てる段階で、書き込み回数が臨界値以上を超えたページに書き込みが発生すれば、ページフォールトを発生させ、ページフォールトが発生したページは、メモリ割り当てに利用されないことを特徴とする請求項１３に記載の方法。
【請求項１８】
前記メモリを割り当てる段階は、
バイナリーツリー資料構造に基づいたバディ割り当てアルゴリズムを用いてメモリを割り当てる場合、バイナリーツリー資料構造上の一つのノードにページフォールトが発生すれば、前記ページフォールトが発生したノード及び前記ページフォールトが発生したノードの少なくとも一つの上位ノードをマーキングする段階と、
前記少なくとも一つのノードの大きさによるページ割り当てが要請され、前記要請が連続空間の割り当てであるか否かを決定する段階と、をさらに含み、
前記少なくとも一つのノードの大きさによるページ割り当てが要請されて連続空間割り当てである場合、前記マーキングされたノードに対応するページは割り当てられないようにすることを特徴とする請求項１７に記載の方法。
【請求項１９】
前記ページテーブルエントリーは、前記ページテーブルエントリーに含まれた値のタイプを表わす識別子情報を含み、
前記識別子情報は、前記ページテーブルエントリーが、寿命情報を保存するメモリのポインター情報を表わすか、または前記寿命情報自体を表わすかどうかを指示する情報であることを特徴とする請求項１３に記載の方法。
【請求項２０】
一つのページが、２つ以上のプロセスによって共有される場合、前記識別子情報は、前記共有されるページの寿命情報を保存するメモリのポインター情報を表わし、
一つのページが、一つのプロセスによってのみ使われる場合、前記寿命情報は、前記寿命情報自体を表わすことを特徴とする請求項１９に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリシステムに係り、より詳細には、メモリシステム及びその磨耗度管理方法に関する。
【背景技術】
【０００２】
ＮＶＲＡＭ（Ｎｏｎ−Ｖｏｌａｔｉｌｅ  ＲＡＭ）は、電源がオフになっても記録された内容が残っているＲＡＭメモリであって、ファイルを保存するかプロセスの処理時に使われる。ＮＶＲＡＭに記録された内容は、電源がオフになっても残っているので、突然電源が切れてもシステムが早い時間内に最新の状態に復元可能であるという長所がある。電源故障ではないとしても、ユーザが任意に電源を除去しても復元されるので、ユーザの便宜性が増大する。ＮＶＲＡＭは、ＰＲＡＭ（Ｐｈａｓｅ  ｃｈａｎｇｅ  ＲＡＭ）、ＦｅＲＡＭ（Ｆｅｒｒｏｅｌｅｃｔｒｉｃ  ＲＡＭ）及びＭＲＡＭ（Ｍａｇｎｅｔｉｃ  ＲＡＭ）などを含む。
【０００３】
また、ＮＶＲＡＭは、ＤＲＡＭに比べて電力消耗が低く、ＤＲＡＭをＮＶＲＡＭに代替する場合、システム電力が減少しうる。ＮＶＲＡＭは、書き込み前の消去動作が要求されない。すなわち、ＮＶＲＡＭは、書換え（ｏｖｅｒｗｒｉｔｅ）を支援する。しかし、ＮＶＲＡＭは、ＤＲＡＭに比べて制限された書き込み（ｗｒｉｔｅ）回数を有するために、磨耗度平準化にならない場合、メモリ故障が発生することがある。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明は、ＮＶＲＡＭがメインメモリまたは保存装置として使われる場合、ＮＶＲＡＭに適した磨耗度平準化のためのメモリシステム及びその磨耗度管理方法を提案する。
【課題を解決するための手段】
【０００５】
本発明の一態様によるメモリシステムでメインメモリは、ＮＶＲＡＭを含む。メモリシステムは、メインメモリを制御する制御部を含み、制御部は、ＮＶＲＡＭの仮想アドレス及び物理アドレスのマッピング情報を含むページテーブルを管理する。ここで、ページテーブルのエントリーは、ページの磨耗度を表わす寿命情報を含む。
【０００６】
寿命情報は、ページについての残りの書き込み回数情報を表わし、制御部は、各ページにデータが書き込まれる度に、書き込まれるページに対応するページテーブルエントリーに記載の残りの書き込み回数情報を示す値を減少させることができる。
【０００７】
制御部によって制御される不揮発性メモリをさらに含み、制御部は、電源をオフにする動作前に、各ページの寿命情報を不揮発性メモリに保存し、ブーティング時に、不揮発性メモリに保存された書き込み回数を復元し、各ページの寿命情報に基づいてメインメモリに対するメモリ割り当てを行うことができる。
【０００８】
制御部は、磨耗されたページをブラックリストに登録して管理し、電源をオンにする動作前に、ブラックリストを不揮発性メモリに保存し、ブーティング時に、不揮発性メモリに保存されたブラックリストを復元して利用できる。
【０００９】
制御部は、書き込み回数が臨界値以上を超えたページに書き込みが発生すれば、ページフォールトを発生させ、ページフォールトが発生したページのコンテンツを他のフリーページにコピーし、フォールトが発生したページの物理アドレスとマッピングされていた仮想アドレスが、新たに割り当てしたページに対する物理アドレスとマッピングされるようにページテーブルを変更することができる。
【００１０】
制御部は、メモリ割り当て時にページフォールトが発生したページにメモリ割り当てが行われないように制御することができる。
【００１１】
制御部は、バイナリーツリー資料構造に基づいたバディ割り当てアルゴリズムを用いてメモリを割り当てる場合、バイナリーツリー資料構造上の一つのノードにページフォールトが発生すれば、ページフォールトが発生したノード及びページフォールトが発生したノードの少なくとも一つの上位ノードをマーキングし、少なくとも一つのノードの大きさによるページ割り当てが要請されて連続空間を割り当てしなければならない場合、マーキングされたノードに対応するページは割り当てられないようにできる。
【００１２】
ページテーブルは、ページ単位より大きなスーパーセクション単位で仮想アドレスに対応する物理アドレスを管理する第１階層ページテーブル及びページ単位で仮想アドレスに対応する物理アドレスを管理する第２階層ページテーブルを含み、第１階層ページテーブルのエントリーは、各スーパーセクションの残りの書き込み回数情報を含み、第２階層ページテーブルのエントリーは、当該ページの残りの書き込み回数情報を含みうる。
【００１３】
ページテーブルは、ページ単位で仮想アドレスに対応する物理アドレス情報を含む第２階層ページテーブルエントリーの位置を指示する第１階層ページテーブル及び第２階層ページテーブルを含み、第２階層ページテーブルエントリーは、当該ページの残りの書き込み回数情報を含みうる。
【００１４】
ページテーブルエントリーは、ページテーブルエントリーに含まれた値の種類を表わす識別子情報を含み、識別子情報は、ページテーブルエントリーが寿命情報が保存された他のメモリの保存位置を指示するポインター情報を表わすか、または寿命情報自体を表わすかを区別するための情報であり得る。
【００１５】
一つのページが、２つ以上のプロセスによって共有される場合、寿命情報は、共有されるページの寿命情報を保存する他のメモリのポインター情報を表わし、一つのページが、一つのプロセスによってのみ使われる場合、寿命情報は、寿命情報自体を表わすことができる。
【００１６】
制御部は、２つ以上のプロセスによって共有されたページが共有されない場合、寿命情報が表わすポインターが指示している他のメモリに保存された寿命情報を共有されたページのページテーブルエントリーの寿命情報を記録した寿命フィールドにコピーし、共有されていないページが２つ以上のプロセスによって共有される場合、共有されていないページの寿命フィールドの値を他のメモリの所定の位置にコピーして、寿命フィールドには、コピーされた位置を指示するポインター情報を記録することができる。
【００１７】
本発明の他の態様によるＮＶＲＡＭを含むメインメモリと、メインメモリを制御する制御部と、を含むメモリシステムの磨耗度管理方法であって、ＮＶＲＡＭの仮想アドレスと物理アドレスのマッピング情報を含むページテーブルエントリーは、ページの磨耗度を表わす寿命情報を含む。各ページにデータが書き込まれる度に、書き込まれるページに対応するページテーブルエントリーに記載の寿命情報に残りの書き込み回数情報を指示する値を減少させることで磨耗度が管理される。
【図面の簡単な説明】
【００１８】
【図１】本発明の一実施形態によるメモリシステムを示すブロック図である。
【図２】本発明の一実施形態によるページテーブル構造を示す図である。
【図３Ａ】本発明の一実施形態によるページが共有されない場合の寿命フィールドを示す図である。
【図３Ｂ】本発明の一実施形態によるページが複数個のプロセスによって共有される場合の寿命フィールドを示す図である。
【図４】本発明の一実施形態によるメモリシステムの磨耗度管理方法を示すフローチャートである。
【図５】本発明の一実施形態によるメモリ割り当て途中にページフォールトが発生した場合のフォールトを処理する方法を示すフローチャートである。
【発明を実施するための形態】
【００１９】
以下、添付した図面を参照して、本発明の一実施形態を詳しく説明する。本発明を説明するに当って、関連した公知機能または構成についての具体的な説明が、本発明の要旨を不明にする恐れがあると判断される場合には、その詳細な説明を省略する。また、後述する用語は、本発明での機能を考慮して定義された用語であって、これは、ユーザ、運用者の意図または慣例などによって変わりうる。したがって、その定義は、本明細書全般に亘った内容に基づいて下されなければならない。
【００２０】
図１は、本発明の一実施形態によるメモリシステムを示すブロック図である。
【００２１】
本発明の一実施形態によるメモリシステム１００は、制御部１１０、メインメモリ１２０及び不揮発性メモリ１３０を含む。実線は、データ及び命令が伝達されるシステムバスを表わす。
【００２２】
制御部１１０は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）またはマイクロコントローラ（Ｍｉｃｒｏｃｏｎｔｒｏｌｌｅｒ）などで構成することができる。
【００２３】
本発明の一実施形態によるメインメモリ１２０は、制御部１１０と直接データを交換することができるメモリであって、制御部１１０でオペレーティングシステム（ＯＳ）またはアプリケーションの実行過程で利用されるメモリである。メインメモリ１２０は、ＮＶＲＡＭ及びＤＲＡＭを含む。
【００２４】
制御部１１０の動作のうち、ＯＳが使う目的でＤＲＡＭにメモリ割り当てがなされる。したがって、ページテーブル及びＮＶＲＡＭのメモリ割り当てに使われるデータは、ＯＳが使うデータであるので、ＤＲＡＭに保存される。ＮＶＲＡＭのメモリ割り当てに使われるデータは、例えば、バディアロケーションアルゴリズム遂行時に使われるバイナリーツリーを含む。
【００２５】
一般のユーザアプリケーションに対するプロセスは、ＯＳにメモリ割り当てを要請する時、ＤＲＡＭにメモリ割り当てを要請するか、ＮＶＲＡＭにメモリ割り当てを要請するかどうかを明示してメモリ割り当てを要請することができる。
【００２６】
不揮発性メモリ１３０は、電源供給が中断された場合にも、不揮発性メモリ１３０に保存されたデータは消滅されず、データを保存するために使われる。不揮発性メモリ１３０に保存されたデータは、メインメモリ１１０にロードされた後、制御部１１０によって処理される。不揮発性メモリ１３０は、フラッシュメモリ、ハードディスクなどで構成することができる。
【００２７】
制御部１１０は、ＭＭＵ（Ｍｅｍｏｒｙ  Ｍａｎａｇｅｍｅｎｔ  Ｕｎｉｔ）１１２、メモリ割り当て部１１４及びＡＰＦハンドラー（Ａｇｉｎｇ  Ｐａｇｅ  Ｆａｕｌｔ  ｈａｎｄｌｅｒ）１１６を含む。制御部１１０は、他の機能部を追加的に含むことができ、ＭＭＵ１１２、メモリ割り当て部１１４及びＡＰＦハンドラー１１６の機能ユニットの細部機能は、他の機能ユニットで行われるなど制御部１１０の構造は多様に変形されうる。
【００２８】
ＭＭＵ１１２は、制御部１１０に存在する回路であって、制御部１１０が参照するメモリ領域の仮想アドレスを物理アドレスに変換する装置である。ＭＭＵ１１２は、各仮想メモリページが如何なる物理メモリページにマッピングされるかを記録しているページテーブルを参照して、仮想アドレスを物理アドレスに変換する。
【００２９】
本発明の一実施形態によるページテーブルエントリー（ｐｔｅ）は、ページの磨耗度を表わす寿命（年齢）情報（ａｇｉｎｇ  ｉｎｆｏｒｍａｔｉｏｎ）を含む。ページテーブルエントリーは、寿命情報を直接含みうる。または寿命情報は、寿命情報が保存されたメモリの位置を示すポインター情報としてページテーブルエントリーに含まれうる。寿命（ａｇｅ）を管理する単位は、ページである。すなわち、各ページ内のあらゆるバイトは、いずれも同じ寿命年齢を有する。
【００３０】
ページテーブルエントリーは、寿命情報を含む寿命フィールドを含みうる。ページテーブルエントリー寿命情報は、各ページの耐久限度（ｅｎｄｕｒａｎｃｅ  ｌｉｍｉｔ）に到逹するまで使うことができる回数である残りの書き込み回数（ｎｕｍｂｅｒ  ｏｆ  ｒｅｍａｉｎｉｎｇ  ｗｒｉｔｅ  ｏｐｅｒａｔｉｏｎｓ  ｐｅｒｍｉｔｔｅｄ  ｆｏｒｔｈｅ  ｐａｇｅ）を表わす情報であり得る。
【００３１】
ＭＭＵ１１２は、メモリ領域に書き込み作業が発生する場合、当該メモリ領域の寿命情報を管理する。ＭＭＵ１１２は、所定のページに書き込み動作が発生する場合、当該ページに対するページエントリーに含まれた寿命情報の値を減少させることによって、寿命情報を更新することができる。
【００３２】
例えば、寿命フィールドの初期値は、ページテーブルエントリーの初期化時になされるが、ＮＶＲＡＭの耐久限度はαと定めることができる。ここで、αは正の整数であって、ＯＳが定める整数値であるが、この値は、ページの耐久限度に到逹する前に、あらかじめ書き込みを遮断する目的として使われる。すなわち、所定のページのページテーブルエントリーには、初期値でαである残りの書き込み回数情報が記録され、当該ページにデータが書き込まれる度に、αが１ずつ減少してαが０になるまでデータを記録することができる。
【００３３】
ＭＭＵ１１２は、保存命令が行われる度に、ページの寿命情報をアップデートするものではなく、実際メモリのページ書き込みが起きる時点に当該ページに対応するページテーブルエントリーの寿命フィールドの寿命情報を１減少させることができる。すなわち、制御部１１０が保存命令を行うとしても、ＣＰＵキャッシュ上にキャッシングされているならば、即座にメモリに書き込むものではなく、キャッシュ内容を修正するだけである。この際、保存命令は、バイト、ワード、多重ワード単位などで行われうる。
【００３４】
制御部１１０は、電源をオフにする動作前に、各ページの寿命情報を不揮発性メモリ１３０に保存し、ブーティング時に、不揮発性メモリ１３０に保存された書き込み回数を復元し、各ページの寿命情報に基づいてメインメモリ１２０に対するメモリ割り当てを行うことができる。また、制御部１１０は、寿命フィールドの値がそれ以上書き込みができない磨耗されたページ情報を含むブラックリストを生成及び管理することができる。制御部１１０は、電源をオンにする動作前に、ブラックリストを不揮発性メモリ１３０に保存し、ブーティング時に、不揮発性メモリ１３０に保存されたブラックリストを復元することができる。
【００３５】
メモリ割り当て部１１４は、コンピュータプログラムを行うために必要なメモリを割り当てる。一実施形態によれば、メモリ割り当て部１１４は、ＮＶＲＡＭにメモリ割り当て時にバディアロケーションアルゴリズム（ｂｕｄｄｙ  ａｌｌｏｃａｔｉｏｎ  ａｌｇｏｒｉｔｈｍ）によってメモリを割り当てることができる。
【００３６】
一方、制御部１１０は、書き込み回数が臨界値以上を超えたページに書き込みが発生すれば、ページフォールト（ａｇｉｎｇ  ｐａｇｅ  ｆａｕｌｔ）を発生させ、ページフォールトが発生したページが使われないように制御することができる。詳細には、ページに書き込みが発生する時、ＭＭＵ１１２は、このページの寿命が一定の臨界値を超える場合、ＡＰＦハンドラー１１６にジャンプする。例えば、ＭＭＵ１１２は、ページにデータが書き込まれる度に、寿命情報の値を一つずつ減少させ、これが０に落ちれば、ＡＰＦを発生させる。
【００３７】
ＡＰＦハンドラー１１６は、ページフォールトが発生すれば、ページフォールトが発生したページに対してフォールト処理を行う。通常のＡＰＦハンドラー１１６は、ＯＳに含まれて行われる。ＡＰＦハンドラー１１６は、ページフォールトが発生したページの内容を他のフリーページにコピーし、ＭＭＵ１１２は、ページフォールトの物理アドレスとマッピングされていた仮想アドレスが、新たに割り当てしたページに対する物理アドレスとマッピングされるようにページテーブルを変更することができる。
【００３８】
以下、メモリ割り当て部１１４がバディアロケーションアルゴリズムによってメモリを割り当てる方法について説明する。
【００３９】
バディアロケーションアルゴリズムは、メモリ領域を２ｎ個のページを有する領域に分割して管理する方式である。バディアロケーションアルゴリズムでは、全体メモリを一つのブロックとして見なして、要請に合うブロックが発見されるまで各ブロックを二つに分割（ｓｐｌｉｔ）することを反復して割り当てを処理し、割り当てによって二つに分けられたブロックがいずれも解除されれば、再び元の一つのブロックに併合することを反復する方式でメモリ割り当てを処理する。バディアロケーションアルゴリズムは、バイナリーツリー資料構造またはハッシュテーブル資料構造に基づいてページを割り当てることができる。ここで、二つに分けられて以後に再び合わせられる対象となるブロックは、互いにバディ（ｂｕｄｄｙ）と見なされる。
【００４０】
バディアロケーションアルゴリズムが、バイナリーツリー資料構造に基づく場合を中心に説明する。この場合、バイナリーツリー資料構造でツリーの各ノードは、２ｎ個のページに対応する。バイナリーツリー資料構造で所定の親（ｐａｒｅｎｔ）ノードが２ｋのページに対応する場合、当該親ノードの子（ｃｈｉｌｄ）ノードは、２ｋのページに含まれた２ｋ−１のページに対応する。また、バディは、バディシステムの割り当てツリー空間上で兄弟（Ｓｉｂｌｉｎｇ）に該当するノードを意味する。
【００４１】
各ノードには、ノードについての情報が含まれる。ノードについての情報は、当該ノードに含まれるページの個数、バディノード識別情報、ノードに含まれるページのページフォールトが発生したページの個数、当該ノードの子ノード識別情報、当該ノードの親ノード識別情報、当該ノードについてのページが分割されたのかを表わす情報を含みうる。
メモリ割り当て時にページは、物理的に連続した空間への配置如何についての情報もともに入ると仮定する。外部装置とのインターフェースのために使われる場合のように、連続的な空間割り当てが必要な場合がある。このような場合、連続空間を割り当てることができなければ、失敗になる。
【００４２】
２ｋ個ページを割り当てる場合を説明すれば、まず、２ｋ個ページを有するノードのうち、フリーなものを捜して割り当てる。もし、そのようなノードがない場合、それより小さなサイズのノードをさらに検索するが、このようになれば、物理的に連続空間に置かれることはできなくなる。したがって、割り当て要請時に連続空間が割り当てられなければならないということが明示された場合には、２ｋ個ページを有するノードより小さなサイズのページに対応するノードは検索しない。２ｋ個ページを有するノードが検索されなければ、２ｋ個より大きなサイズのノードを検索し、当該ノードに対応するページを分割してメモリ割り当てを試みる。
【００４３】
一方、ＭＭＵ１１２は、ＤＲＡＭの耐久限度は寿命情報を含む寿命フィールドが表現することができる最大値、例えば、２３０−１に初期化され、この最大値は、毎度ブーティングする度に同じ値に初期化されることができる。したがって、ＤＲＡＭで誤った寿命ページフォールトが発生する確率はほとんどない。
【００４４】
メモリ割り当て部１１４がメモリ割り当て動作を行う途中にＮＶＲＡＭのページフォールトが発生すれば、ＡＰＦハンドラー１１６は、ＡＰＦを発生させたページを含むバイナリーツリー上のあらゆるノードをマーキングする。すなわち、バイナリーツリー上でページフォールトが発生したノード及びページフォールトが発生したノードの上位ノードまたは先祖（ａｎｃｅｓｔｏｒ）がいずれもマーキングされる。マーキング動作は、各ノードについての情報でノードに含まれるページのページフォールトが発生したページの個数を１増加させることで具現可能である。
【００４５】
メモリ割り当て部１１４は、フォールトが発生したページは引き続きメモリ割り当てに利用しない。所定大きさの連続したメモリ空間を割り当てしなければならない場合、要請された大きさのページに対応するノードの中でマーキングされているノードは割り当てせず、連続メモリ空間である必要がなければ、マーキングされたノードの下位ノードを検索してマーキングされていない下位ノードを割り当てることができる。
【００４６】
メモリ割り当て部１１４は、ＯＳがブーティングする時点に不揮発性メモリ１３０に保存されていたブラックリストを読み取って利用するために、ページフォールトが発生したページを含むバイナリーツリー上のあらゆるノードをマーキングするように、ブラックリストに登録されたページ及びそのページの先祖に対応するバイナリーノードにマーキングする。そして、マーキングされたノードは、連続した空間のメモリ割り当て時に利用しない。
【００４７】
前述したように、一実施形態によれば、ＮＶＲＡＭのページテーブルで各ページの磨耗度を表わす寿命情報を含み、各ページにデータが書き込まれる度に、寿命情報をアップデートすることによって、ＮＶＲＡＭがメインメモリとして使われる場合にも、バッドページが発生してシステムの破壊を防止することができる。
【００４８】
図２は、本発明の一実施形態によるページテーブル構造を示す図である。
【００４９】
ページテーブルの構成は、２つのレベルまたは３つのレベルの階層構造を有しうる。ＡＲＭｖ６  ＣＰＵの場合、ページディレクトリとも呼ぶ第１階層ページテーブル及びコースページテーブルと呼ぶ第２階層ページテーブルを含む。
【００５０】
図２で、第１階層ページテーブルのエントリーをＬ１  ｐｔｅで表示し、第２階層ページテーブルエントリーをＬ２  ｐｔｅで表示する。第１階層ページテーブルのエントリーは、１ＭＢ大きさのセクションまたは１６ＭＢ大きさのスーパーセクションについての管理情報を表示することができる。または第１階層ページテーブルのエントリーは、第２階層ページテーブルの位置情報を含み、第２階層ページテーブルのエントリーが第１階層ページテーブルに含まれた各ページ別に管理情報を表わすことができる。
【００５１】
既存の３２ビットプロセッサでは、通常ｐｔｅの大きさが３２ビットであるが、寿命フィールドは、１０７の耐久性を有するＮＶＲＡＭを仮定する時、最小２４ビットが必要である。このために、一実施形態によれば、既存のＬ１  ｐｔｅ及びＬ２  ｐｔｅの構造を維持しながら３２ビット寿命フィールドを追加して、各ページテーブルエントリーをそれぞれ６４ビットに確張して利用できる。各Ｌ１  ｐｔｅとＬ２  ｐｔｅごとに３２ビットの寿命フィールドが追加されて、既存の方式に比べてページテーブルの大きさは２倍になる。
【００５２】
整理すれば、ページテーブル構造は、ページ単位より大きなスーパーセクション単位で仮想アドレスに対応する物理アドレスを管理する第１階層ページテーブル及びページ単位で仮想アドレスに対応する物理アドレスを管理する第２階層ページテーブルを含みうる。この場合には、第１階層ページテーブルのエントリーの寿命情報（Ｌ１  ｐｔｅ  ＃１  ａｇｅ）は、各スーパーセクションの残りの書き込み回数情報を含む。各スーパーセクションに含まれたあらゆるページの寿命情報は、同一になる。第２階層ページテーブルのエントリーの寿命情報（例えば、Ｌ２  ｐｔｅ  ＃１  ａｇｅ）は、当該ページ（Ｌ２  ｐｔｅ  ＃１）の残りの書き込み回数情報を含みうる。
【００５３】
また、ページテーブルは、ページ単位で仮想アドレスに対応する物理アドレス情報を含む第２階層ページテーブルエントリーの位置を指示する第１階層ページテーブル及び第２階層ページテーブルを含みうる。この場合には、第２階層ページテーブルエントリーは、ページ単位で残りの書き込み回数情報を含みうる。
【００５４】
このように、ＮＶＲＡＭに対するページテーブルエントリーにＮＶＲＡＭの寿命を表わす寿命フィールドを追加し、ＮＶＲＡＭのページにデータが書き込まれる度に、寿命フィールドに含まれた値を減少させることによって、ＮＶＲＡＭがデータ書き込みが単純に記録媒体として利用される時より多いメインメモリとして利用される場合にも、ＮＶＲＡＭの磨耗度管理を効率的にできる。
【００５５】
図３Ａは、本発明の一実施形態によるページが共有されない場合の寿命フィールドを示す図であり、図３Ｂは、ページが複数個のプロセスによって共有される場合の寿命フィールドを示す図である。
【００５６】
図３Ａは、一つのプロセス“ｆｏｏ”によってページＡが利用される場合のページＡのページテーブルエントリーを表わす。図３Ａで、ページテーブルエントリーに含まれた寿命情報（Ｌ２  ｐｔｅ  ＃１  ａｇｅ）は、ページＡの残りの書き込み回数の値を表わす。寿命情報を３２ビットで表わす時、ページテーブルエントリーの寿命情報が寿命情報自体の値を表わすための識別情報として一部のビットを利用できる。図３Ａでは、最下位２ビット“１１”が寿命情報が寿命情報自体の値を表わすための識別情報を表わす。
【００５７】
図３Ｂは、２つのプロセス“ｆｏｏ”及び“ｂａｒ”によってページＡが共有される場合のページＡのページテーブルエントリーを表わす。一つのページを多様なプロセスが共有する場合には、当該ページの残りの書き込み回数をページテーブルエントリーではない他のメモリアドレスに保存する。この場合、寿命情報は、残りの書き込み回数の値を表わさず、残りの書き込み回数情報が保存されたメモリのアドレスを示すポインター情報を含みうる。
【００５８】
図３Ｂでは、ページテーブルエントリーの寿命情報が、当該ページの実際残りの書き込み回数値を保存しているメモリのポインター情報であるということを表わすために、ビット“００”を識別情報として利用した。すなわち、プロセス“ｆｏｏ”及びプロセス“ｂａｒ”によって利用されるページテーブルエントリーの寿命情報（Ｌ２  ｐｔｅ＃１  ａｇｅ）は、ページＡの実際残りの書き込み回数を保存しているメモリのポインター情報を表わす。
【００５９】
すなわち、一実施形態によるページテーブルエントリーは、ページテーブルエントリーに含まれた値の種類を表わす識別子情報を含みうる。識別子情報は、ページテーブルエントリーが寿命情報が保存された他のメモリの保存位置を指示するポインター情報を表わすか、または寿命情報自体を表わすかを区別するための情報であり得る。識別子情報は、図３Ａ及び図３Ｂに示されたように、寿命フィールドの下位２ビットの値として表わすことができる。すなわち、寿命フィールドの下位２ビットの値によって上位３０ビットに残りの書き込み回数を保存するメモリのポインターまたは残りの書き込み回数値として認識する。ポインターの場合には、００ｂを有し、値である場合には、１１ｂを有しうる。
【００６０】
一つのページが、２つ以上のプロセスによって共有される場合、寿命情報は、共有されるページの寿命情報を保存する他のメモリのポインター情報を表わし、一つのページが、一つのプロセスによってのみ使われる場合、寿命情報は、寿命情報自体を表わすことができる。
【００６１】
制御部１１０のＭＭＵ１１２は、２つ以上のプロセスによって共有されたページが共有されない場合、寿命情報が表わすポインターが指示している他のメモリに保存された寿命情報を共有されたページのページテーブルエントリーの寿命情報を記録した寿命フィールドにコピーすることができる。また、共有されていないページが２つ以上のプロセスによって共有される場合、ＭＭＵ１１２は、共有されていないページの寿命フィールドの値を他のメモリの所定の位置にコピーし、寿命フィールドには、コピーされた位置を指示するポインター情報を記録することができる。
【００６２】
図４は、本発明の一実施形態によるメモリシステムの磨耗度管理方法を示すフローチャートである。
【００６３】
本発明の一実施形態によるメモリシステムで、ＮＶＲＡＭの仮想アドレスと物理アドレスとのマッピング情報を含むページテーブルエントリーは、ＮＶＲＡＭの各ページの磨耗度を表わす寿命フィールドを含む。
【００６４】
メモリ割り当てによって所定のページにデータが書き込まれれば（Ｓ４１０）、データが書き込まれたページにデータが書き込まれる度に、寿命フィールドに含まれた各ページの残りの書き込み回数情報の値を減少させる（Ｓ４２０）。残りの書き込み回数が０ではなければ、すなわち、当該ページがまだ耐久限度に到逹しない場合には、メモリ割り当て要請によってページにデータが再び書き込まれることができる。
【００６５】
残りの書き込み回数が０になれば（Ｓ４３０）、当該ページは耐久限度に到逹したので、フォールトページとして処理される。ページフォールトが発生したページは、メモリ割り当てがなされないように管理される。
【００６６】
図５は、本発明の一実施形態によるメモリ割り当て途中にページフォールトが発生した場合のフォールトを処理する方法を示すフローチャートである。
【００６７】
メモリ割り当て途中にページフォールトが発生すれば（Ｓ５１０）、ＡＰＦハンドラー１１６は、まず、ＡＰＦを発生させたページを含むあらゆるノード、すなわち、バイナリーツリー上でページフォールトが発生したノード及びページフォールトが発生したノードの先祖をいずれもマーキングする（Ｓ５１２）。
【００６８】
ページフォールトが発生したページが連続空間内のページであるか否かを決定する（Ｓ５１４）。
【００６９】
連続空間内のページである場合（Ｓ５１４）、ＡＰＦハンドラー１１６は、連続空間を割り当てることができる他のフリーノードを検索して（Ｓ５１６）、該検索されたフリーノードに対応するページを再割り当てる（Ｓ５１８）。この際、ＡＰＦを発生させたページを含んでいるノードを使わない。すなわち、ＡＰＦを発生させたページとそれを含むノードとをいずれもマーキングされるが、フリーノードを捜す過程でマーキングされたノードはスキップすることによって、ＡＰＦを発生させたことのないページにのみ構成されるフリーページを選択する。
【００７０】
その後、連続空間内のコンテンツを再割り当てられたページにコピーする（Ｓ５２０）。フォールトページの内容が他のフリーページにコピーされてページ再割り当てが行われれば、ＭＭＵ１１２は、再割り当てしたページを示せるようにページテーブルを変更する（Ｓ５２８）。
【００７１】
連続空間内のページではない場合（Ｓ５２２）、ＡＰＦハンドラー１１６は、このページ一つのみ他のフリーページに再割り当てし（Ｓ５２４）、既存ページの内容を再割り当てしたページにコピーする（Ｓ５２６）。フォールトページの内容が他のフリーページにコピーされてページ再割り当てが行われれば、ＭＭＵ１１２は、再割り当てしたページを示せるようにページテーブルを変更する（Ｓ５２８）。
【００７２】
本発明の一態様は、コンピュータで読み取り可能な記録媒体にコンピュータで読み取り可能なコードとして具現可能である。前記のプログラムを具現するコード及びコードセグメントは、当該分野のコンピュータプログラマーによって容易に推論されうる。コンピュータで読み取り可能な記録媒体は、コンピュータシステムによって読み取れるデータが保存されるあらゆる種類の記録装置を含む。コンピュータで読み取り可能な記録媒体の例としては、ＲＯＭ、ＲＡＭ、ＣＤ−ＲＯＭ、磁気テープ、フロッピー（登録商標）ディスク、光ディスクなどを含む。また、コンピュータで読み取り可能な記録媒体は、ネットワークで連結されたコンピュータシステムに分散されて、分散方式でコンピュータで読み取り可能なコードに保存されて実行可能である。
【００７３】
以上、本発明の一実施形態に過ぎず、当業者ならば、本発明の本質的特性から外れない範囲で変形された形態として具現することができる。したがって、本発明の範囲は、前述した実施形態に限定されず、特許請求の範囲に記載の内容と同等な範囲内にある多様な実施形態が含まれるように解析されなければならない。
【産業上の利用可能性】
【００７４】
本発明は、メモリシステム及びその磨耗度管理方法関連の技術分野に適用可能である。
【図１】
2010186477.tif 000003
【図２】
2010186477.tif 000004
【図３Ａ】
2010186477.tif 000005
【図３Ｂ】
2010186477.tif 000006
【図４】
2010186477.tif 000007
【図５】
2010186477.tif 000008