(57)【要約】      （修正有）【課題】不揮発性メモリを主記憶として使用するコンピュータシステムにおいて、ビットエラーの発生を抑制するメモリ管理方法を提供する。【解決手段】仮想アドレスを物理アドレスに変換して不揮発性メモリに書き込みを実行する。不揮発性メモリにおける各ページの書き込み回数に基づき、書き込み回数が上限を超えたページである第１のページ、及び書き込み回数が上限を超えていないページである第２のページを検出し、仮想アドレスと物理アドレスとの対応を表すデータにおいて、第１のページの物理アドレスを第２のページの物理アドレスに変更する処理を含む。【選択図】図７
2016085677.tif 000002
【特許請求の範囲】
【請求項１】
不揮発性メモリを有するコンピュータに、
前記不揮発性メモリにおける各ページの書き込み回数に基づき、書き込み回数が上限を超えたページである第１のページ、及び書き込み回数が前記上限を超えていないページである第２のページを検出し、
仮想アドレスと物理アドレスとの対応を表すデータにおいて、前記第１のページの物理アドレスを前記第２のページの物理アドレスに変更する
処理を実行させるメモリ管理プログラム。
【請求項２】
前記コンピュータが、揮発性メモリをさらに有し、
前記第１のページ及び前記第２のページを検出する処理において、前記揮発性メモリのページ、又は前記不揮発性メモリのページであって書き込み回数が前記上限を超えていないページである前記第２のページを検出する、
請求項１記載のメモリ管理プログラム。
【請求項３】
前記不揮発性メモリにおける各ページの書き込み回数、及び前記仮想アドレスと物理アドレスとの対応を表すデータは、前記揮発性メモリに格納される
請求項２記載のメモリ管理プログラム。
【請求項４】
前記コンピュータに、
前記揮発性メモリに格納された、前記不揮発性メモリにおける各ページの書き込み回数を、所定のタイミングに前記不揮発性メモリに複製する
処理をさらに実行させる請求項３記載のメモリ管理プログラム。
【請求項５】
前記第１のページ及び前記第２のページを検出する処理において、
前記不揮発性メモリにおける各ページの書き込み回数、及び前記不揮発性メモリにおける各ページがプロセスに割り当てられているか否かを表す情報に基づき、書き込み回数が前記上限を超えておらず且ついずれのプロセスにも割り当てられていないページである前記第２のページを検出する
請求項１記載のメモリ管理プログラム。
【請求項６】
不揮発性メモリを有するコンピュータが、
前記不揮発性メモリにおける各ページの書き込み回数に基づき、書き込み回数が上限を超えたページである第１のページ、及び書き込み回数が前記上限を超えていないページである第２のページを検出し、
仮想アドレスと物理アドレスとの対応を表すデータにおいて、前記第１のページの物理アドレスを前記第２のページの物理アドレスに変更する
処理を実行するメモリ管理方法。
【請求項７】
不揮発性メモリにおける各ページの書き込み回数に基づき、書き込み回数が上限を超えたページである第１のページ、及び書き込み回数が前記上限を超えていないページである第２のページを検出する検出部と、
仮想アドレスと物理アドレスとの対応を表すデータにおいて、前記第１のページの物理アドレスを前記第２のページの物理アドレスに変更する変更部と
を有する情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリ管理技術に関する。
【背景技術】
【０００２】
近年のコンピュータシステム（例えば、携帯機、汎用機、及びハイエンド機など）においては、主記憶の管理に仮想メモリシステムが広く利用されている。仮想メモリシステムは、ＭＭＵ（Memory Management Unit）と呼ばれるハードウエアと、ＯＳ（Operating System）の一部として実装されたソフトウエアとによって実現される。
【０００３】
仮想メモリシステムが管理する主記憶には、揮発性メモリであるＤＲＡＭ（Dynamic Random Access Memory）が使用されてきた。しかし、ＤＲＡＭの容量の増加ペースが今後鈍化し、これまでのように容量が指数関数的に増加することは無いと予想されている。
【０００４】
これに対し、ＭＲＡＭ（Magnetoresistive Random Access Memory）、ＰＣＭ（Phase Change Memory）、及びＲｅＲＡＭ（Resistance Random Access Memory）等、バイトアクセスが可能な不揮発性メモリ（ＳＣＭ（Storage Class Memory）と呼ばれる）を主記憶として使用することが提案されている。ＳＣＭは、今後も容量の増加及び応答速度の増加等が見込まれるため、ＤＲＡＭの代替になることが期待されている。
【０００５】
ＳＣＭを主記憶として利用することにはいくつかのメリットが有る。第１のメリットは省電力化である。ＤＲＡＭにおいては定期的に電荷をコンデンサに注入する処理（この処理はリフレッシュと呼ばれる）が行われるが、ＳＣＭの場合にはリフレッシュが不要であるため、消費電力を削減できるようになる。
【０００６】
第２のメリットは起動時間の短縮である。ＤＲＡＭの場合、電源を切るとＤＲＡＭ上のデータが失われるため、ブートの際にＤＲＡＭにデータをロードする処理をするが、ＳＣＭの場合、電源を切ったとしてもＳＣＭ上にデータが残る。そのため、コンピュータシステムの起動時にデータをロードする処理が不要になり、起動時間を短縮できるようになる。
【０００７】
第３のメリットは大容量化である。ＳＣＭ性能は今後向上することが見込まれるため、将来的にはＳＣＭのビット単価がＤＲＡＭのビット単価が安くなり、主記憶をより大容量化できるようになると考えられている。
【０００８】
但し、一部のＳＣＭには書き込み回数の増加に従ってビットエラーの発生率が高くなるという特性がある。例えば図１に示すように、プロセスＡ及びプロセスＢが不揮発性メモリにアクセスする状況があるとする。プロセスＡが不揮発性メモリにアクセスする頻度は、プロセスＢが不揮発性メモリにアクセスする頻度より高い。プロセスＡ及びプロセスＢが指定する仮想アドレスは、仮想メモリシステムが管理するページテーブルによって物理アドレスに変換される。
【０００９】
このような状況においては、プロセスＡがデータを書き込む物理ページ（図１において白色の矢印が指し示す物理ページ）に書き込みが集中することになる。すると、例えば図２に示すように、不揮発性メモリにおいて書き込み回数の偏りが生じる。図２においては、横軸は物理アドレス空間を表し、縦軸は書き込み回数を表す。図２においては、書き込み回数が上限を超えた物理ページが存在する。書き込み回数が上限を超えると、ビットエラーの発生率が高くなり、ビットエラーを訂正しきれなくなるため、コンピュータシステムの動作に致命的な影響を及ぼすことがある。
【００１０】
或る文献は、不揮発性メモリを主記憶として使用するコンピュータシステムにおいて、書き込みが発生する仮想ページに割り当てる物理メモリの容量を拡張することで、書き込み制限を回避する技術を開示する。但し、この技術は、書き込みを予測するためにアプリケーションに改変を加えることを前提とした技術である。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】特開２０１２−１８５６０９号公報
【発明の概要】
【発明が解決しようとする課題】
【００１２】
従って、本発明の目的は、１つの側面では、不揮発性メモリを主記憶として使用するコンピュータシステムにおいて、ビットエラーの発生を抑制するための技術を提供することである。
【課題を解決するための手段】
【００１３】
本発明に係るメモリ管理方法は、不揮発性メモリを有するコンピュータが実行する。そして、本メモリ管理方法は、不揮発性メモリにおける各ページの書き込み回数に基づき、書き込み回数が上限を超えたページである第１のページ、及び書き込み回数が上限を超えていないページである第２のページを検出し、仮想アドレスと物理アドレスとの対応を表すデータにおいて、第１のページの物理アドレスを第２のページの物理アドレスに変更する処理を含む。
【発明の効果】
【００１４】
１つの側面では、不揮発性メモリを主記憶として使用するコンピュータシステムにおいて、ビットエラーの発生を抑制できるようになる。
【図面の簡単な説明】
【００１５】
【図１】図１は、プロセスによる書き込みについて説明するための図である。
【図２】図２は、書き込み回数の偏りについて説明するための図である。
【図３】図３は、情報処理装置のハードウエア構成を示す図である。
【図４】図４は、ＯＳの機能ブロック図である。
【図５】図５は、ページテーブルの一例を示す図である。
【図６】図６は、ページ管理データの一例を示す図である。
【図７】図７は、メインの処理フローを示す図である。
【図８】図８は、ページ割り当て処理の処理フローを示す図である。
【図９】図９は、書き込み回数を平準化について説明するための図である。
【図１０】図１０は、情報処理装置のハードウエア構成を示す図である。
【図１１】図１１は、ＯＳの機能ブロック図である。
【図１２】図１２は、ページ管理データの一例を示す図である。
【図１３】図１３は、メインの処理フローを示す図である。
【図１４】図１４は、ページ割り当て処理の処理フローを示す図である。
【図１５】図１５は、バックアップ処理の処理フローを示す図である。
【発明を実施するための形態】
【００１６】
本実施の形態においては、主記憶として使用されるＳＣＭの書き込み回数を管理することにより、ビットエラーの発生を抑制し、コンピュータを安定的に運用できるようにする。
【００１７】
まず、書き込み回数を管理する機構をハードウエアで実装することを考える。ハードウエアで実装する場合、メモリコントローラなどにアドレスを変換する機能をもたせることになる。しかし、一般的な仮想メモリシステムはＭＭＵというアドレス変換ユニットを有しているため、ＭＭＵ及びメモリコントローラの両方でアドレス変換を行うことになる。そのため、ハードウエアが占めるスペースが広くなり、消費電力が増加し、また実装に要するコストが増える。
【００１８】
そこで、以下で説明する実施の形態においては、書き込み回数を管理する機構をソフトウエアで実装することでウェアレベリングを実現する例を説明する。
【００１９】
［実施の形態１］
図３に、第１の実施の形態におけるハードウエア構成図を示す。情報処理装置１は、ＣＰＵ（Central Processing Unit）１０１と、ＭＭＵ１０３と、メモリコントローラ１０５と、メインメモリ１０７と、ＨＤＤ（Hard Disk Drive）１１１とを有する。なお、ＣＰＵ１０１はＭＭＵ１０３を内蔵してもよい。
【００２０】
ＭＭＵ１０３は、ページテーブルを用いて、プロセスが指定した仮想アドレスを物理アドレスに変換するハードウエアである。なお、ＭＭＵ１０３は、ＴＬＢ（Translation Lookaside Buffer）等のキャッシュを管理してもよい。また、キャッシュは複数段であってもよいし、命令用及びデータ用等の用途毎にキャッシュを管理してもよい。
【００２１】
メモリコントローラ１０５は、メインメモリ１０７に対する書き込み及び読み出しを実行するハードウエアである。本実施の形態においてはページング方式の仮想メモリシステムが採用されており、メインメモリ１０７においては、４キロバイト程度の物理ページ単位でデータの書き込み及び読み出しが行われる。
【００２２】
メインメモリ１０７は、バイトアクセスが可能な不揮発性メモリであるＳＣＭであり、ページテーブルの格納領域１０７１と、ページ管理データの格納領域１０７３とを含む。なお、ＳＣＭは次世代不揮発性メモリとも呼ばれる。
【００２３】
ＨＤＤ１１１は、ＯＳ１０のプログラムを格納し、ＯＳ１０のプログラムは本実施の形態における処理を実行するためのプログラムを含む。ＯＳ１０のプログラムは、ＯＳ１０のプログラムは、ＣＰＵ１０１により実行される際にＨＤＤ１１１からメインメモリ１０７に読み出される。
【００２４】
図４に、ＯＳ１０の機能ブロック図を示す。ＯＳ１０は、検出部１１と、割り当て部１３とを含む。検出部１１は、書き込み回数が上限を超えた物理ページを検出する処理を実行する。割り当て部１３は、プロセスに対して新たに割り当てる物理ページを特定する処理を実行する。
【００２５】
図５に、ページテーブルの格納領域１０７１に格納されるページテーブルの一例を示す。図５の例では、仮想アドレスと、物理アドレスとが格納される。図５に示したようなデータはプロセス毎に用意される。或るプロセスが指定する仮想アドレスが他のプロセスが指定する仮想アドレスと同じである場合はあるが、前者に対応付けられる物理アドレスと後者に対応付けられる物理アドレスとは異なる。
【００２６】
図６に、ページ管理データの格納領域１０７３に格納されるページ管理データの一例を示す。図６の例では、物理ページの識別子と、割り当てフラグと、摩耗フラグと、書き込み回数とが格納される。割り当てフラグの値が０である物理ページはプロセスに割り当てられておらず、割り当てフラグの値が１である物理ページはプロセスに割り当てられている。摩耗フラグの値が１である物理ページは新たにプロセスに割り当てられることはなく、摩耗フラグの値が０である物理ページは新たにプロセスに割り当てられる可能性がある。
【００２７】
次に、図７及び図８を用いて、情報処理装置１の動作について説明する。
【００２８】
まず、ＯＳ１０は、アプリケーションプログラム等からの書き込み要求を受け付ける。すると、検出部１１は、書き込み要求において指定された仮想アドレスに対応する物理アドレスをページテーブルから特定し、ページ管理データの格納領域１０７３において、特定された物理アドレスを有する物理ページの書き込み回数を１インクリメントする（図７：ステップＳ１）。
【００２９】
検出部１１は、書き込み回数が上限以下であるか判断する（ステップＳ３）。通常、上限はＳＣＭの製造者等により予め定められており、上限を超えると、発生したビットエラーを訂正しきれない可能性が高くなる。
【００３０】
上限以下である場合（ステップＳ３：Ｙｅｓルート）、指定された仮想アドレスに対応する物理アドレスを有する物理ページに対する書き込みを継続できるので、ステップＳ１１の処理に移行する。一方、上限を超えた場合（ステップＳ３：Ｎｏルート）、検出部１１は、割り当て部１３に処理を指示する。これに応じ、割り当て部１３は、ページ割り当て処理を実行する（ステップＳ５）。ページ割り当て処理については、図８を用いて説明する。
【００３１】
まず、割り当て部１３は、割り当てフラグの値及び摩耗フラグの値の両方が０であるエントリのうち未処理のエントリを、ページ管理データの格納領域１０７３から１つ特定する（図８：ステップＳ２１）。ステップＳ２１においては、例えば線形探索、二分岐探索、或いはその他の派生アルゴリズムに従いポインタを進めることによって、該当するエントリを特定する。
【００３２】
割り当て部１３は、ステップＳ２１において特定されたエントリに含まれる書き込み回数は上限以下であるか判断する（ステップＳ２３）。上限以下ではない場合（ステップＳ２３：Ｎｏルート）、ステップＳ２１の処理に戻る。
【００３３】
一方、上限以下である場合（ステップＳ２３：Ｙｅｓルート）、割り当て部１３は、ステップＳ２１において特定されたエントリに含まれる割り当てフラグの値を１に設定する（ステップＳ２５）。
【００３４】
割り当て部１３は、ページテーブルにおいて、前に割り当てられていた物理ページの物理アドレスを、新たに割り当てられた物理ページの物理アドレスで置換する（ステップＳ２７）。そして呼び出し元の処理に戻る。ステップＳ２７において、前に割り当てられていた物理ページの物理アドレスとは、プロセスから指定された仮想アドレスに対応する物理アドレスである。新たに割り当てられた物理ページの物理アドレスとは、ステップＳ２１において特定されたエントリの物理ページの物理アドレスである。
【００３５】
以上のような処理を実行すれば、プロセスに割り当てられていない物理ページを活用できるようになる。
【００３６】
なお、ページ割り当て処理は、新たな仮想アドレスに対する書き込み要求をプロセスから受け付けた場合にも実行される。この場合は、ページテーブルに新たにエントリが登録される。
【００３７】
図７の説明に戻り、検出部１１は、プロセスに対して新たに割り当てられた物理ページに、前に割り当てられていた物理ページ内のデータをコピーする（ステップＳ７）。
【００３８】
検出部１１は、前に割り当てられていた物理ページを解放（すなわち、データを削除）し、ページ管理データの格納領域１０７３における摩耗フラグの値を１に設定する（ステップＳ９）。
【００３９】
検出部１１は、書き込み要求において指定された書き込みを行うことをメモリコントローラ１０５に指示する。これに応じ、メモリコントローラ１０５は、書き込み要求において指定された書き込みをメインメモリ１０７に対して実行する（ステップＳ１１）。そして処理を終了する。
【００４０】
以上のような処理を実行すれば、書き込み回数が上限を超えた物理ページに対してはプロセスによる書き込みが行われなくなるので、ＳＣＭを主記憶として使用する情報処理装置１においてビットエラーが発生するのを抑制できるようになる。
【００４１】
また、一般的な仮想メモリシステムをそのまま利用できるので、ＯＳ１０への改変が少なくて済み、一般的な仮想メモリシステムと同様、スワップイン処理及びスワップアウト処理にも対応することができる。さらに、書き込み回数を管理する機構がソフトウエアで実装されているので、ハードウエアで実装する場合と比べてスペース、消費電力、及び実装に要するコスト等の点でメリットがある。
【００４２】
なお、本実施の形態によれば、例えば図９に示すようにウェアレベリングを実現できるようになる。図９の例では、横軸は物理アドレス空間を表し、縦軸は書き込み回数を表す。図２の例と比べると、１つの物理ページに書き込みが集中するのではなく、複数のページに書き込みが分散されている。これにより、ビットエラーの発生を抑え、情報処理装置１を安定的に運用できるようになる。
【００４３】
［実施の形態２］
第２の実施の形態においては、主記憶として、ＳＣＭとＤＲＡＭを併用する例を説明する。図１０に、情報処理装置１のハードウエア構成図を示す。情報処理装置１は、ＣＰＵ１０１と、ＭＭＵ１０３と、メモリコントローラ１０５と、ＳＣＭであるメインメモリ１０７と、ＤＲＡＭであるメインメモリ１０９と、ＨＤＤ１１１とを有する。なお、ＣＰＵ１０１はＭＭＵ１０３を内蔵してもよい。
【００４４】
メインメモリ１０９には、ページテーブルの格納領域１０９１と、ページ管理データの格納領域１０９３とが設けられる。メインメモリ１０９はＤＲＡＭであるため、ページ管理データの格納領域１０９３内のデータは、定期的に、ＳＣＭであるメインメモリ１０７にコピーされる。
【００４５】
図１１に、ＯＳ１０の機能ブロック図を示す。ＯＳ１０は、検出部１１と、割り当て部１３と、複製部１５とを含む。検出部１１は、書き込み回数が上限を超えた物理ページを検出する処理を実行する。割り当て部１３は、プロセスに対して新たに割り当てる物理ページを特定する処理を実行する。複製部１５は、ページ管理データの格納領域１０９３内のデータを、メインメモリ１０７にコピーする。
【００４６】
図１２に、ページ管理データの格納領域１０９３に格納されるページ管理データの一例を示す。図１２の例では、物理ページの識別子と、ＳＣＭフラグと、割り当てフラグと、摩耗フラグと、書き込み回数と、バックアップ時刻ｔとが格納される。ＳＣＭフラグの値が０である物理ページはＤＲＡＭの物理ページであり、ＳＣＭフラグの値が１である物理ページはＳＣＭの物理ページである。ＳＣＭフラグの値が０である物理ページの書き込み回数の欄は空欄である。割り当てフラグの値が０である物理ページはプロセスに割り当てられておらず、割り当てフラグの値が１である物理ページはプロセスに割り当てられている。摩耗フラグの値が１である物理ページは新たにプロセスに割り当てられることはなく、摩耗フラグの値が０である物理ページは新たにプロセスに割り当てられる可能性がある。バックアップ時刻ｔは、前回ページ管理データをコピーした時刻である。
【００４７】
次に、図１３乃至図１５を用いて、情報処理装置１の動作について説明する。
【００４８】
まず、ＯＳ１０は、アプリケーションプログラム等からの書き込み要求を受け付ける。すると、検出部１１は、書き込み要求において指定された仮想アドレスに対応する物理アドレスをページテーブルから特定し、ページ管理データの格納領域１０９３において、特定された物理アドレスを有する物理ページのＳＣＭフラグの値を特定する。そして、検出部１１は、特定されたＳＣＭフラグの値が０であるか判断する（図１３：ステップＳ３１）。
【００４９】
ＳＣＭフラグの値が０である場合（ステップＳ３１：Ｙｅｓルート）、書き込みが行われる物理ページはＤＲＡＭ上に有る。よって、検出部１１は、書き込み要求において指定された書き込みを行うことをメモリコントローラ１０５に指示する。これに応じ、メモリコントローラ１０５は、書き込み要求において指定された書き込みをメインメモリ１０９に対して実行する（ステップＳ３３）。そして処理を終了する。
【００５０】
一方、ＳＣＭフラグの値が１である場合（ステップＳ３１：Ｎｏルート）、検出部１１は、書き込み要求において指定された仮想アドレスに対応する物理アドレスをページテーブルから特定し、ページ管理データの格納領域１０９３において、特定された物理アドレスを有する物理ページの書き込み回数を１インクリメントする（ステップＳ３５）。
【００５１】
検出部１１は、書き込み回数が上限以下であるか判断する（ステップＳ３７）。通常、上限はＳＣＭの製造者等により予め定められており、上限を超えると、発生したビットエラーを訂正しきれない可能性が高くなる。
【００５２】
上限以下である場合（ステップＳ３７：Ｙｅｓルート）、指定された仮想アドレスに対応する物理アドレスを有する物理ページに対する書き込みを継続できるので、ステップＳ４５の処理に移行する。一方、上限を超えた場合（ステップＳ３７：Ｎｏルート）、検出部１１は、割り当て部１３に処理を指示する。これに応じ、割り当て部１３は、ページ割り当て処理を実行する（ステップＳ３９）。ページ割り当て処理については、図１４を用いて説明する。
【００５３】
まず、割り当て部１３は、ＳＣＭフラグの値及び割り当てフラグの値の両方が０であるエントリを、ページ管理データの格納領域１０９３から探索する（図１４：ステップＳ５１）。エントリを見つけた場合（ステップＳ５３：Ｙｅｓルート）、未割り当てのＤＲＡＭの物理ページが有るので、ステップＳ５９の処理に移行する。
【００５４】
一方、エントリが見つからない場合（ステップＳ５３：Ｎｏルート）、割り当て部１３は、割り当てフラグの値及び摩耗フラグの値の両方が０であるエントリのうち未処理のエントリを、ページ管理データの格納領域１０９３から１つ特定する（ステップＳ５５）。ステップＳ５５においては、例えば線形探索、二分岐探索、或いはその他の派生アルゴリズムに従いポインタを進めることによって、該当するエントリを特定する。
【００５５】
割り当て部１３は、ステップＳ５５において特定されたエントリに含まれる書き込み回数は上限以下であるか判断する（ステップＳ５７）。上限以下ではない場合（ステップＳ５７：Ｎｏルート）、ステップＳ５５の処理に戻る。
【００５６】
一方、上限以下である場合（ステップＳ５７：Ｙｅｓルート）、割り当て部１３は、ステップＳ５５において特定されたエントリ又はステップＳ５１において見つけられたエントリに含まれる割り当てフラグを１に設定する（ステップＳ５９）。
【００５７】
割り当て部１３は、ページテーブルにおいて、前に割り当てられていた物理ページの物理アドレスを、新たに割り当てられた物理ページの物理アドレスで置換する（ステップＳ６１）。そして呼び出し元の処理に戻る。ステップＳ６１において、前に割り当てられていた物理ページの物理アドレスとは、プロセスから指定された仮想アドレスに対応する物理アドレスである。新たに割り当てられた物理ページの物理アドレスとは、ステップＳ５５において特定されたエントリ又はステップＳ５１において見つけられたエントリの物理ページの物理アドレスである。
【００５８】
以上のような処理を実行すれば、ＤＲＡＭの物理ページを優先的に割り当てることができるようになる。
【００５９】
なお、ページ割り当て処理は、新たな仮想アドレスに対する書き込み要求をプロセスから受け付けた場合にも行われる。この場合は、ページテーブルに新たにエントリが登録されることになる。
【００６０】
図１３の説明に戻り、検出部１１は、プロセスに対して新たに割り当てられた物理ページに、前に割り当てられていた物理ページ内のデータをコピーする（ステップＳ４１）。
【００６１】
検出部１１は、前に割り当てられていた物理ページを解放（すなわち、データを削除）し、ページ管理データの格納領域１０９３における摩耗フラグを１に設定する（ステップＳ４３）。
【００６２】
検出部１１は、書き込み要求において指定された書き込みを行うことをメモリコントローラ１０５に指示する。これに応じ、メモリコントローラ１０５は、書き込み要求において指定された書き込みをメインメモリ１０７又は１０９に対して実行する（ステップＳ４５）。
【００６３】
検出部１１は、複製部１５に対して処理の実行を指示する。これに応じ、複製部１５は、バックアップ処理を実行する（ステップＳ４７）。バックアップ処理については、図１５を用いて説明する。
【００６４】
まず、複製部１５は、例えばシステム時計から、現在の時刻を取得する（図１５：ステップＳ７１）。そして、複製部１５は、前回バックアップを実行した時刻であるバックアップ時刻ｔをページ管理データの格納領域１０９３から取得し、バックアップ時刻ｔから現在の時刻までの時間を算出する（ステップＳ７３）。
【００６５】
複製部１５は、ステップＳ７３において算出された時間が所定の時間より長いか判断する（ステップＳ７５）。所定の時間より長くない場合（ステップＳ７５：Ｎｏルート）、バックアップをすべきタイミングではないので、呼び出し元の処理に戻る。
【００６６】
一方、所定の時間より長い場合（ステップＳ７５：Ｙｅｓルート）、複製部１５は、ページ管理データの格納領域１０９３に格納されたページ管理データで、前回のバックアップの際にＳＣＭであるメインメモリ１０７に格納されたページ管理データを置換する（ステップＳ７７）。
【００６７】
複製部１５は、ステップＳ７１において取得された現在の時刻を、ページ管理データの格納領域１０９３にバックアップ時刻ｔとして保存する（ステップＳ７９）。そして呼び出し元の処理に戻り、処理は終了する。
【００６８】
以上のような処理を実行すれば、情報処理装置１の電源を切ったとしても書き込み回数の情報が失われてしまうことが無くなる。そして、第２の実施の形態によれば、ＳＣＭとＤＲＡＭとを併用することで、両者のメリットを享受したコンピュータシステムを運用することができるようになる。
【００６９】
以上本発明の一実施の形態を説明したが、本発明はこれに限定されるものではない。例えば、上で説明したＯＳ１０の機能ブロック構成は実際のプログラムモジュール構成に一致しない場合もある。
【００７０】
また、上で説明した各テーブルの構成は一例であって、上記のような構成でなければならないわけではない。さらに、処理フローにおいても、処理結果が変わらなければ処理の順番を入れ替えることも可能である。さらに、並列に実行させるようにしても良い。
【００７１】
なお、第１の実施の形態においてはステップＳ１において書き込み回数を１インクリメントするが、ステップＳ１１において実際に書き込みを実行した際に書き込み回数を１インクリメントしてもよい。第２の形態においても、ステップＳ３５において書き込み回数を１インクリメントするが、ステップＳ４５において実際に書き込みを実行した際に書き込み回数を１インクリメントしてもよい。
【００７２】
なお、第２の実施の形態においては、ページテーブルの格納領域及びページ管理データの格納領域をＳＣＭに設けてもよい。そうすれば、主記憶の不揮発性をより活かした情報処理装置１を実現できる。
【００７３】
以上述べた本発明の実施の形態をまとめると、以下のようになる。
【００７４】
本実施の形態に係るメモリ管理方法は、主記憶として使用される不揮発性メモリを有するコンピュータが実行する。そして、本メモリ管理方法は、（Ａ）不揮発性メモリにおける各ページの書き込み回数を格納する第１データ格納部を用いて、書き込み回数が上限を超えたページである第１のページを検出し、（Ｂ）第１データ格納部を用いて、書き込み回数が上限を超えていないページである第２のページを検出し、（Ｃ）仮想アドレスと物理アドレスとの対応を表すデータを格納する第２データ格納部において、第１のページの物理アドレスを第２のページの物理アドレスに変更する処理を含む。
【００７５】
このようにすれば、書き込みの回数が上限を超えたページに対してはプロセスによる書き込みが行われなくなるので、不揮発性メモリを主記憶として使用するコンピュータにおいてビットエラーが発生するのを抑制できるようになる。
【００７６】
また、第１データ格納部及び第２データ格納部は、不揮発性メモリに設けられてもよい。主記憶を利用するので、読み出し及び書き込みを高速で行えるようになる。
【００７７】
また、上で述べたコンピュータが、主記憶として使用される揮発性メモリをさらに有してもよい。そして、第２のページを検出する処理において、（ｂ１）揮発性メモリのページ、又は不揮発性メモリのページであって書き込み回数が上限を超えていないページである第２のページを検出してもよい。このようにすれば、書き込み回数の上限が無い揮発性メモリのページをもプロセスに割り当てられるようになる。
【００７８】
また、第１データ格納部及び第２データ格納部は、揮発性メモリに設けられてもよい。揮発性メモリの主記憶を利用するので、読み出し及び書き込みを高速で行えるようになり、また、第１データ格納部及び第２データ格納部に対する書き込み回数の上限が無くなる。
【００７９】
また、本メモリ管理方法は、（Ｄ）第１データ格納部内のデータを、所定のタイミングに不揮発性メモリに複製する処理をさらに含んでもよい。このようにすれば、コンピュータの電源を切った場合に揮発性メモリにおける各ページの書き込み回数の情報が失われるのを防げるようになる。
【００８０】
また、第１データ格納部は、不揮発性メモリにおける各ページがプロセスに割り当てられているか否かを表す第１の情報をさらに格納してもよい。そして、第２のページを検出する処理において、（ｂ２）第１データ格納部に格納された書き込み回数及び第１の情報に基づき、書き込み回数が上限を超えておらず且ついずれのプロセスにも割り当てられていないページである第２のページを検出してもよい。このようにすれば、１つの物理アドレスを２以上の仮想アドレスに対応付けることが無くなる。
【００８１】
また、本メモリ管理方法は、（Ｅ）第１のページ内のデータを第２のページに複製し、（Ｆ）第１のページ内のデータを削除する処理をさらに含んでもよい。このようにすれば、書き込み及び読み出しを適切に継続できるようになる。
【００８２】
なお、上記方法による処理をコンピュータに行わせるためのプログラムを作成することができ、当該プログラムは、例えばフレキシブルディスク、ＣＤ−ＲＯＭ、光磁気ディスク、半導体メモリ、ハードディスク等のコンピュータ読み取り可能な記憶媒体又は記憶装置に格納される。尚、中間的な処理結果はメインメモリ等の記憶装置に一時保管される。
【００８３】
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
【００８４】
（付記１）
不揮発性メモリを有するコンピュータに、
前記不揮発性メモリにおける各ページの書き込み回数に基づき、書き込み回数が上限を超えたページである第１のページ、及び書き込み回数が前記上限を超えていないページである第２のページを検出し、
仮想アドレスと物理アドレスとの対応を表すデータにおいて、前記第１のページの物理アドレスを前記第２のページの物理アドレスに変更する
処理を実行させるメモリ管理プログラム。
【００８５】
（付記２）
前記コンピュータが、揮発性メモリをさらに有し、
前記第１のページ及び前記第２のページを検出する処理において、前記揮発性メモリのページ、又は前記不揮発性メモリのページであって書き込み回数が前記上限を超えていないページである前記第２のページを検出する、
付記１記載のメモリ管理プログラム。
【００８６】
（付記３）
前記不揮発性メモリにおける各ページの書き込み回数、及び前記仮想アドレスと物理アドレスとの対応を表すデータは、前記揮発性メモリに格納される
付記２記載のメモリ管理プログラム。
【００８７】
（付記４）
前記コンピュータに、
前記揮発性メモリに格納された、前記不揮発性メモリにおける各ページの書き込み回数を、所定のタイミングに前記不揮発性メモリに複製する
処理をさらに実行させる付記３記載のメモリ管理プログラム。
【００８８】
（付記５）
前記第１のページ及び前記第２のページを検出する処理において、
前記不揮発性メモリにおける各ページの書き込み回数、及び前記不揮発性メモリにおける各ページがプロセスに割り当てられているか否かを表す情報に基づき、書き込み回数が前記上限を超えておらず且ついずれのプロセスにも割り当てられていないページである前記第２のページを検出する
付記１記載のメモリ管理プログラム。
【００８９】
（付記６）
前記コンピュータに、
前記第１のページ内のデータを前記第２のページに複製し、
前記第１のページ内のデータを削除する
処理をさらに実行させる付記１乃至５のいずれか１つ記載のメモリ管理プログラム。
【００９０】
（付記７）
不揮発性メモリを有するコンピュータが、
前記不揮発性メモリにおける各ページの書き込み回数に基づき、書き込み回数が上限を超えたページである第１のページ、及び書き込み回数が前記上限を超えていないページである第２のページを検出し、
仮想アドレスと物理アドレスとの対応を表すデータにおいて、前記第１のページの物理アドレスを前記第２のページの物理アドレスに変更する
処理を実行するメモリ管理方法。
【００９１】
（付記８）
不揮発性メモリにおける各ページの書き込み回数に基づき、書き込み回数が上限を超えたページである第１のページ、及び書き込み回数が前記上限を超えていないページである第２のページを検出する検出部と、
仮想アドレスと物理アドレスとの対応を表すデータにおいて、前記第１のページの物理アドレスを前記第２のページの物理アドレスに変更する変更部と
を有する情報処理装置。
【符号の説明】
【００９２】
１  情報処理装置    １１  検出部
１３  割り当て部    １５  複製部
１０１  ＣＰＵ    １０３  ＭＭＵ
１０５  メモリコントローラ    １０７，１０９  メインメモリ
１０７１，１０９１  ページテーブルの格納領域
１０７３，１０９３  ページ管理データの格納領域
１１１  ＨＤＤ
【図１】
2016085677.tif 000003
【図２】
2016085677.tif 000004
【図３】
2016085677.tif 000005
【図４】
2016085677.tif 000006
【図５】
2016085677.tif 000007
【図６】
2016085677.tif 000008
【図７】
2016085677.tif 000009
【図８】
2016085677.tif 000010
【図９】
2016085677.tif 000011
【図１０】
2016085677.tif 000012
【図１１】
2016085677.tif 000013
【図１２】
2016085677.tif 000014
【図１３】
2016085677.tif 000015
【図１４】
2016085677.tif 000016
【図１５】
2016085677.tif 000017