(57)【要約】【課題】不揮発記憶部の寿命を適切な長さに制御する。【解決手段】管理装置は、設定記憶部と、管理部とを備える。設定記憶部は、複数のページのそれぞれについて、不揮発記憶部から第１記憶部に転送したデータに対して書き込みおよび読み出しをする第１アクセス処理、または、不揮発記憶部に記憶されたデータに対して直接書き込みおよび読み出しをする第２アクセス処理の何れを実行するかを示すアクセス方法を記憶する。管理部は、不揮発記憶部に対する書き込み量が設定値より大きい場合、複数のページのうちの第２アクセス処理に設定されている何れかのページを交換対象ページとして選択し、交換対象ページのアクセス方法を、第２アクセス処理から第１アクセス処理に変更する。【選択図】図４
2019164508.tif 000002
【特許請求の範囲】
【請求項１】
第１記憶部および複数のページを含む不揮発記憶部に対する、処理回路によるデータの読み出しおよび書き込みを制御する管理装置であって、
前記複数のページのそれぞれについて、前記不揮発記憶部から前記第１記憶部に転送したデータに対して書き込みおよび読み出しをする第１アクセス処理、または、前記不揮発記憶部に記憶されたデータに対して直接書き込みおよび読み出しをする第２アクセス処理の何れを実行するかを示すアクセス方法を記憶する設定記憶部と、
前記第１アクセス処理に設定されているページに対して書き込みまたは読み出しの要求を受けた場合、前記第１アクセス処理を実行し、前記第２アクセス処理に設定されているページに対して書き込みまたは読み出しの要求を受けた場合、前記第２アクセス処理を実行するアクセス処理部と、
前記不揮発記憶部に対する書き込み量が設定値より大きい場合、前記複数のページのうちの前記第２アクセス処理に設定されている何れかのページを交換対象ページとして選択し、前記交換対象ページのアクセス方法を、前記第２アクセス処理から前記第１アクセス処理に変更する管理部と、
を備える管理装置。
【請求項２】
前記管理部は、所定期間毎に前記不揮発記憶部に対する書き込み回数を検出し、前記所定期間における書き込み回数が前記設定値である第１閾値より大きい場合、前記交換対象ページのアクセス方法を、前記第２アクセス処理から前記第１アクセス処理に変更する
請求項１に記載の管理装置。
【請求項３】
前記管理部は、前記所定期間における書き込み回数が、前記第１閾値より小さい第２閾値より小さい場合、前記複数のページのうちの前記第１アクセス処理に設定されている何れかのページを、退避対象ページとして選択し、前記退避対象ページのアクセス方法を、前記第１アクセス処理から前記第２アクセス処理に変更する
請求項２に記載の管理装置。
【請求項４】
前記管理部は、書き換え回数が最も多いページを検出し、前記書き換え回数が、前記設定値である目標範囲の上限より大きい場合、前記交換対象ページのアクセス方法を、前記第２アクセス処理から前記第１アクセス処理に変更する
請求項１に記載の管理装置。
【請求項５】
前記複数のページのそれぞれについて、ページに対する書き換え回数を表すカウンタ値を記憶するカウンタ記憶部と、
前記複数のページのそれぞれについての前記カウンタ値に基づき、前記不揮発記憶部に対してウェアレベリングを実行するウェアレベリング実行部と、
をさらに備える請求項１に記載の管理装置。
【請求項６】
前記管理部は、
前記カウンタ値が更新される毎に、前記カウンタ値の更新直前における更新対象のページに含まれる書き込み済み領域の大きさを検出し、
所定期間毎に、検出した前記書き込み済み領域の大きさ平均値を算出し、前記平均値が前記設定値である第１閾値より大きい場合、前記交換対象ページのアクセス方法を、前記第２アクセス処理から前記第１アクセス処理に変更する
請求項５に記載の管理装置。
【請求項７】
前記管理部は、前記平均値が、前記第１閾値より小さい第２閾値より小さい場合、前記ウェアレベリング実行部によるウェアレベリングを停止させる
請求項６に記載の管理装置。
【請求項８】
前記アクセス処理部は、前記第１アクセス処理をするために前記不揮発記憶部から前記第１記憶部にデータを転送することにより前記第１記憶部のメモリ使用量が設定容量を超える場合、前記第１記憶部に転送済みのデータの一部を前記不揮発記憶部に戻し、
前記管理部は、前記メモリ使用量が予め設定された範囲の上限より大きい場合、前記設定値を大きくし、前記メモリ使用量が前記予め設定された範囲より小さい場合、前記設定値を小さくする
請求項１から７の何れか１項に記載の管理装置。
【請求項９】
前記複数のページのそれぞれは、複数の第２領域を含み、
前記管理装置は、
前記複数のページのそれぞれについて、書き換え回数を表すカウンタ値を記憶するカウンタ記憶部と、
前記複数のページより少ない所定個のページのそれぞれについての管理情報を格納可能な管理テーブルを記憶する管理情報記憶部と、
前記カウンタ値および前記管理テーブルを更新する更新部と、
をさらに備え、
前記管理情報は、対応するページに含まれる複数の第２領域のそれぞれが書き込み済みか未書き込みかを示し、
前記不揮発記憶部に対する第１データの書き込みに応じて、前記更新部は、
前記第１データが書き込まれるページである対象ページについての前記管理情報に示された、前記第１データが書き込まれる第２領域である対象第２領域の状態が、未書き込みの場合、書き込み済みに変更し、
前記管理情報に示された前記対象第２領域の状態が書き込み済みの場合、前記対象第２領域の状態を書き込み済みに変更し、前記対象第２領域以外の状態を未書き込みに変更し、前記対象ページについての前記カウンタ値を更新する
請求項１に記載の管理装置。
【請求項１０】
前記更新部は、前記管理テーブルに前記対象ページについての前記管理情報が存在しない場合、管理情報生成処理を実行し、
前記管理情報生成処理において、前記更新部は、
前記管理テーブルに未使用エントリが有る場合、未使用エントリに前記対象ページについての前記管理情報を書き込み、
前記管理テーブルに未使用エントリが無い場合、何れかの使用中エントリに書き込まれている前記管理情報を消去して、前記対象ページについての前記管理情報を書き込み、
消去した前記管理情報により管理されていたページについての前記カウンタ値を更新する
請求項９に記載の管理装置。
【請求項１１】
前記管理部は、前記管理テーブルにより前記管理情報が格納されているページであって、書き込み済みの第２領域の個数が最も多いページを、前記交換対象ページとして選択する
請求項９または１０に記載の管理装置。
【請求項１２】
前記管理部は、前記管理テーブルにより前記管理情報が格納されているページであって、書き込み済みの第２領域の個数が所定値以上の少なくとも１つのページの中から、前記交換対象ページを選択する
請求項９または１０に記載の管理装置。
【請求項１３】
前記管理部は、前記カウンタ値が最大のページを、前記交換対象ページとして選択する
請求項９または１０に記載の管理装置。
【請求項１４】
前記管理部は、前記管理テーブルにおける書き込み済みの第２領域の個数が所定値より小さいページを除いたページの中で、前記カウンタ値が最大のページを、前記交換対象ページとして選択する
請求項９または１０に記載の管理装置。
【請求項１５】
第１記憶部および不揮発記憶部に対する、処理回路によるデータの読み出しおよび書き込みを制御する管理装置であって、
前記処理回路により読み出しおよび書き込みがされるデータについて、前記第１記憶部または前記不揮発記憶部における記憶領域を示す物理アドレスを記憶する設定記憶部と、
前記処理回路からデータの書き込みまたは読み出しの要求を受けた場合、前記第１記憶部または前記不揮発記憶部における、前記要求の対象のデータについての前記物理アドレスに示された記憶領域にアクセスするアクセス処理部と、
前記不揮発記憶部に対する書き込み量が設定値より大きい場合、前記不揮発記憶部に記憶されている一部のデータの記憶領域を、前記不揮発記憶部から前記第１記憶部に変更する管理部と、
を備える管理装置。
【請求項１６】
第１記憶部および複数のページを含む不揮発記憶部に対する、処理回路によるデータの読み出しおよび書き込みを制御する管理装置であって、
前記処理回路により読み出しおよび書き込みがされるデータについて、前記第１記憶部または前記不揮発記憶部における記憶領域を示す物理アドレスを記憶する設定記憶部と、
前記複数のページのそれぞれについて、ページに対する書き換え回数を表すカウンタ値を記憶するカウンタ記憶部と、
前記複数のページのそれぞれについての前記カウンタ値に基づき、前記不揮発記憶部に対してウェアレベリングを実行するウェアレベリング実行部と、
前記処理回路からデータの書き込みまたは読み出しの要求を受けた場合、前記第１記憶部または前記不揮発記憶部における、前記要求の対象のデータについての前記物理アドレスに示された記憶領域にアクセスするアクセス処理部と、
管理部と、
を備え、
前記管理部は、
前記カウンタ値が更新される毎に、前記カウンタ値の更新直前における更新対象のページに含まれる書き込み済み領域を検出し、
所定期間毎に、検出した前記書き込み済み領域の大きさの平均値を算出し、
前記平均値が第１閾値より大きい場合、前記不揮発記憶部に記憶されている一部のデータの記憶領域を、前記不揮発記憶部から前記第１記憶部に変更し、
前記平均値が、前記第１閾値より小さい第２閾値より小さい場合、前記ウェアレベリング実行部によるウェアレベリングを停止させる
管理装置。
【請求項１７】
前記処理回路と、
前記第１記憶部と、
前記不揮発記憶部と、
請求項１から請求項１６の何れか１項に記載の管理装置と、
を備える情報処理装置。
【請求項１８】
第１記憶部および複数のページを含む不揮発記憶部に対する、処理回路によるデータの読み出しおよび書き込みを制御する管理装置によるメモリ制御方法であって、
前記管理装置は、
前記複数のページのそれぞれについて、前記不揮発記憶部から前記第１記憶部に転送したデータに対して書き込みおよび読み出しをする第１アクセス処理、または、前記不揮発記憶部に記憶されたデータに対して直接書き込みおよび読み出しをする第２アクセス処理の何れを実行するかを示すアクセス方法を記憶する設定記憶部
を備え、
前記第１アクセス処理に設定されているページに対して書き込みまたは読み出しの要求を受けた場合、前記第１アクセス処理を実行し、前記第２アクセス処理に設定されているページに対して書き込みまたは読み出しの要求を受けた場合、前記第２アクセス処理を実行し、
前記不揮発記憶部に対する書き込み量が設定値より大きい場合、前記複数のページのうちの前記第２アクセス処理に設定されている何れかのページを交換対象ページとして選択し、前記交換対象ページのアクセス方法を、前記第２アクセス処理から前記第１アクセス処理に変更する
メモリ制御方法。
【請求項１９】
第１記憶部および不揮発記憶部に対する、処理回路によるデータの読み出しおよび書き込みを制御する管理装置によるメモリ制御方法であって、
前記管理装置は、
前記処理回路により読み出しおよび書き込みがされるデータについて、前記第１記憶部または前記不揮発記憶部における記憶領域を示す物理アドレスを記憶する設定記憶部
を備え、
前記処理回路からデータの書き込みまたは読み出しの要求を受けた場合、前記第１記憶部または前記不揮発記憶部における、前記要求の対象のデータについての前記物理アドレスに示された記憶領域にアクセスし、
前記不揮発記憶部に対する書き込み量が設定値より大きい場合、前記不揮発記憶部に記憶されている一部のデータの記憶領域を、前記不揮発記憶部から前記第１記憶部に変更する
メモリ制御方法。
【請求項２０】
第１記憶部および複数のページを含む不揮発記憶部に対する、処理回路によるデータの読み出しおよび書き込みを制御する管理装置によるメモリ制御方法であって、
前記管理装置は、
前記処理回路により読み出しおよび書き込みがされるデータについて、前記第１記憶部または前記不揮発記憶部における記憶領域を示す物理アドレスを記憶する設定記憶部と、
前記複数のページのそれぞれについて、ページに対する書き換え回数を表すカウンタ値を記憶するカウンタ記憶部と、
前記複数のページのそれぞれについての前記カウンタ値に基づき、前記不揮発記憶部に対してウェアレベリングを実行するウェアレベリング実行部と、
を備え、
前記処理回路からデータの書き込みまたは読み出しの要求を受けた場合、前記第１記憶部または前記不揮発記憶部における、前記要求の対象のデータについての前記物理アドレスに示された記憶領域にアクセスし、
前記カウンタ値が更新される毎に、前記カウンタ値の更新直前における更新対象のページに含まれる書き込み済み領域を検出し、
所定期間毎に、検出した前記書き込み済み領域の大きさの平均値を算出し、
前記平均値が第１閾値より大きい場合、前記不揮発記憶部に記憶されている一部のデータの記憶領域を、前記不揮発記憶部から前記第１記憶部に変更し、
前記平均値が、前記第１閾値より小さい第２閾値より小さい場合、前記ウェアレベリング実行部によるウェアレベリングを停止させる
メモリ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、管理装置、情報処理装置およびメモリ制御方法に関する。
【背景技術】
【０００２】
フラッシュメモリ等の不揮発メモリは、書き換え回数に上限がある。このため、不揮発メモリを備える情報処理装置は、不揮発メモリに対してウェアレベリング制御をする。例えば、情報処理装置は、書き換え回数を書き換え単位であるページ単位やそれより大きな単位であるブロック単位で管理して、ページ毎に平均的にデータを書き込む。これにより、情報処理装置は、不揮発メモリの寿命を延ばすことができる。
【０００３】
近年、ストレージクラスメモリと呼ばれる高速な不揮発メモリが開発されている。ストレージクラスメモリは、ページ単位でのデータの書き換えに加えて、ページよりも小さい例えばバイト単位でのデータの書き込みが可能である。このようにバイト単位でデータの書き込み可能となった不揮発メモリは、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）の作業領域として機能する主記憶装置として用いることができる。
【０００４】
ところで、情報処理装置は、実行するアプリケーションの特性によっては、局所的なメモリアクセスが発生し、ある特定のバイトに対するデータの書き込み回数が多くなる場合がある。このような場合、不揮発メモリは、特定のバイト以外のバイトの書き込み回数は少ないにも関わらず、ページ単位の書き換え回数が増えてしまう。情報処理装置は、このように局所的にメモリアクセスがされたページが増えると、書き込み効率が悪くなり、ウェアレベリング制御をしても、不揮発メモリの寿命が短くなってしまう。
【０００５】
このため、不揮発メモリを主記憶装置として備える情報処理装置では、局所的なメモリアクセスが発生しても寿命が短くならないように、不揮発メモリへの書き込みを制御しなければならなかった。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００８−１４６２５５号公報
【非特許文献】
【０００７】
【非特許文献１】R.  F.  Freitas  and  W.  W.  Wilcke，  “Storage-class  Memory:  The  Next  Storage  System  Technology”，  IBM  Journal  of  Research  and  Development  Vol.52  No.4，  pp.439-447，  2008.
【発明の概要】
【発明が解決しようとする課題】
【０００８】
本発明が解決しようとする課題は、不揮発記憶部の寿命を適切な長さに制御する。
【課題を解決するための手段】
【０００９】
実施形態に係る管理装置は、第１記憶部および複数のページを含む不揮発記憶部に対する、処理回路によるデータの読み出しおよび書き込みを制御する。前記管理装置は、設定記憶部と、アクセス処理部と、管理部とを備える。前記設定記憶部は、前記複数のページのそれぞれについて、前記不揮発記憶部から前記第１記憶部に転送したデータに対して書き込みおよび読み出しをする第１アクセス処理、または、前記不揮発記憶部に記憶されたデータに対して直接書き込みおよび読み出しをする第２アクセス処理の何れを実行するかを示すアクセス方法を記憶する。前記アクセス処理部は、前記第１アクセス処理に設定されているページに対して書き込みまたは読み出しの要求を受けた場合、前記第１アクセス処理を実行し、前記第２アクセス処理に設定されているページに対して書き込みまたは読み出しの要求を受けた場合、前記第２アクセス処理を実行する。前記管理部は、前記不揮発記憶部に対する書き込み量が設定値より大きい場合、前記複数のページのうちの前記第２アクセス処理に設定されている何れかのページを交換対象ページとして選択し、前記交換対象ページのアクセス方法を、前記第２アクセス処理から前記第１アクセス処理に変更する。
【図面の簡単な説明】
【００１０】
【図１】情報処理装置のハードウェア構成を示す図。
【図２】不揮発記憶部の構成を示す図。
【図３】アドレス情報の一例を示す図。
【図４】第１実施形態に係る管理装置の構成を示す図。
【図５】変換テーブルの一例を示す図。
【図６】第１アクセス処理および第２アクセス処理の内容を示す図。
【図７】第１実施形態に係るアクセス処理を示すフローチャート。
【図８】カウンタテーブルの一例を示す図。
【図９】管理テーブルの一例を示す図。
【図１０】更新部による処理の流れを示すフローチャート。
【図１１】管理情報生成処理の流れを示すフローチャート。
【図１２】ウェアレベリング処理の流れを示すフローチャート。
【図１３】管理部の構成を示す図。
【図１４】第１実施形態に係る管理部による処理を示すフローチャート。
【図１５】変換テーブルに対するアクセス方法の変更処理を説明するための図。
【図１６】交換対象ページの選択処理の第１例を示すフローチャート。
【図１７】書き込み済みを示すビットの個数が最も多いエントリを示す図。
【図１８】交換対象ページの選択処理の第２例を示すフローチャート。
【図１９】書き込み済みを示すビットの個数が所定値以上のエントリを示す図。
【図２０】交換対象ページの選択処理の第３例を示すフローチャート。
【図２１】カウンタ値が最も大きいエントリを示す図。
【図２２】交換対象ページの選択処理の第４例を示すフローチャート。
【図２３】所定ページを除き、カウンタ値が最も大きいエントリを示す図。
【図２４】第２実施形態に係る管理部による処理を示すフローチャート。
【図２５】第２実施形態における第１記憶部のメモリ使用量の変化の一例を示す図。
【図２６】第３実施形態に係る管理部による処理を示すフローチャート。
【図２７】アドレス毎の書き込み回数および最大の書き込み回数を示す図。
【図２８】第４実施形態に係る管理部による処理を示すフローチャート。
【図２９】第４実施形態で実行される処理を説明するための図。
【図３０】第５実施形態に係るアクセス処理を示すフローチャート。
【図３１】メモリアクセスにより電力消費の推測値を表す図。
【図３２】第５実施形態に係る第１閾値の変更処理を示すフローチャート。
【図３３】識別情報の変形例を示す図。
【図３４】情報処理装置の構成の第１変形例を示す図。
【図３５】情報処理装置の構成の第２変形例を示す図。
【図３６】情報処理装置の構成の第３変形例を示す図。
【発明を実施するための形態】
【００１１】
以下、図面を参照しながら実施形態に係る情報処理装置１０について詳細に説明する。なお、以下、複数の実施形態について説明をするが、略同一の機能および構成を有するブロックに同一の符号を付け、第２実施形態以降においては重複する内容の説明を省略する。
【００１２】
（第１実施形態）
図１は、情報処理装置１０のハードウェア構成の一例を示す図である。情報処理装置１０は、処理回路１２と、第１記憶部１４と、不揮発記憶部１６と、管理装置１８とを備える。
【００１３】
処理回路１２は、１または複数のプロセッサを有する。プロセッサは、例えば、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）である。プロセッサは、１または複数のＣＰＵコアを含んでいてもよい。処理回路１２は、プログラムを実行して、データを処理する。処理回路１２は、プログラムの実行に応じて、第１記憶部１４または不揮発記憶部１６からデータを読み出したり、第１記憶部１４または不揮発記憶部１６にデータを書き込んだりする。
【００１４】
また、処理回路１２は、Ｌ１データキャッシュ、Ｌ１命令キャッシュ、Ｌ２キャッシュおよびＬ３キャッシュ等の階層的なキャッシュメモリを有する。処理回路１２は、このようなキャッシュメモリを用いて、第１記憶部１４または不揮発記憶部１６に記憶されているデータを一時的に記憶する。処理回路１２は、例えば、階層的なキャッシュにおける最下層のキャッシュ（ラストレベルキャッシュ）でキャッシュミスをした場合、キャッシュライン単位で第１記憶部１４または不揮発記憶部１６に対してアクセスして必要なデータを読み出したり書き込んだりする。
【００１５】
なお、処理回路１２は、データ処理を実行できれば、どのような回路であってもよい。例えば、処理回路１２は、ＧＰＧＰＵ（Ｇｅｎｅｒａｌ−ｐｕｒｐｏｓｅ  ｃｏｍｐｕｔｉｎｇ  ｏｎ  Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）で利用されるＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）であってもよい。また、処理回路１２は、ＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）等のアクセラレータであってもよい。
【００１６】
第１記憶部１４は、処理回路１２による作業領域として用いられる主記憶装置（メインメモリ）である。第１記憶部１４は、例えば、電源の供給を停止すると記憶しているデータが消える揮発記憶部である。第１記憶部１４は、例えば、ＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓ  Ｍｅｍｏｒｙ）である。なお、第１記憶部１４は、ＤＲＡＭと同様に高速アクセスが可能な、ＭＲＡＭ（Ｍａｇｎｅｔｏｒｅｓｉｓｔｉｖｅ  Ｒａｎｄｏｍ  Ａｃｃｅｓ  Ｍｅｍｏｒｙ）等の不揮発メモリであってもよい。
【００１７】
また、第１記憶部１４は、不揮発記憶部１６よりも書き込み可能回数が多い。例えば、第１記憶部１４は、書き込み可能回数を考慮した設計をしなくてよい程度（例えば、書き込み回数に制限が無いとして設計をすることが可能な程度）、書き込み可能回数が多い。
【００１８】
不揮発記憶部１６は、電源の供給を停止してもデータを記憶し続けるメモリである。不揮発記憶部１６は、第１記憶部１４とともに処理回路１２の主記憶装置として機能する。
【００１９】
不揮発記憶部１６は、例えば、ＤＲＡＭより大容量な大容量高速不揮発メモリ（Ｎｏｎ−ｖｏｌａｔｉｌｅ  Ｍｅｍｏｒｙ）を含む。不揮発記憶部１６は、例えば、ＭＲＡＭ、ＰＣＭ（Ｐｈａｓｅ  Ｃｈａｎｇｅ  Ｍｅｍｏｒｙ）、ＰＲＡＭ（Ｐｈａｓｅ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＰＣＲＡＭ（Ｐｈａｓｅ  Ｃｈａｎｇｅ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＲｅＲＡＭ（Ｒｅｓｉｓｔａｎｃｅ  Ｃｈａｎｇｅ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＦｅＲＡＭ（Ｆｅｒｒｏｅｌｅｃｔｒｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、３ＤＸＰｏｉｎｔまたはＭｅｍｒｉｓｔｏｒ等である。不揮発記憶部１６は、いわゆるストレージクラスメモリ（ＳＣＭ）と呼ばれるメモリであってもよい。また、不揮発記憶部１６は、複数の半導体装置を１つの基板または筐体等に設けたモジュールであってもよい。
【００２０】
不揮発記憶部１６は、第１記憶部１４と比較して容量が大きい。不揮発記憶部１６の容量は、第１記憶部１４と同じであってもよい。また、不揮発記憶部１６は、第１記憶部１４のアクセス速度と同等または少し遅い程度である。また、不揮発記憶部１６は、待機電力がゼロか、または、第１記憶部１４と比較して待機電力が非常に少ない。不揮発記憶部１６は、一例として、アクセスレイテンシが１０ｎ秒から数μ秒程度の間のメモリである。
【００２１】
不揮発記憶部１６は、バイト単位等の小領域単位でデータを書き込みおよび読み出し可能である。従って、処理回路１２は、ロード命令またはストア命令により不揮発記憶部１６に対して直接アクセスが可能である。処理回路１２は、例えばキャッシュライン単位等で不揮発記憶部１６に直接アクセスする。
【００２２】
管理装置１８は、第１記憶部１４および不揮発記憶部１６に対する、処理回路１２によるデータの読み出しおよび書き込みを制御する。管理装置１８は、処理回路１２からの第１記憶部１４および不揮発記憶部１６に対するアクセス要求を処理する。すなわち、管理装置１８は、処理回路１２からの書込命令に応じて、データを第１記憶部１４または不揮発記憶部１６に書き込む。また、管理装置１８は、処理回路１２からの読出命令に応じて、データを第１記憶部１４または不揮発記憶部１６から読み出し、読み出したデータを処理回路１２に与える。
【００２３】
また、管理装置１８は、不揮発記憶部１６に対するウェアレベリング制御を実行する。より具体的には、管理装置１８は、不揮発記憶部１６における領域毎のデータの書き換え回数を管理する。そして、管理装置１８は、領域毎の書き換え回数に基づき、不揮発記憶部１６における全体の領域に平均的にデータが書き込まれるように、データの書き込み位置を制御する。
【００２４】
なお、管理装置１８は、例えば、処理回路１２とは別体のハードウェアで構成されたメモリコントローラである。また、管理装置１８は、処理回路１２の一部のハードウェア（例えば、処理回路１２と同一の半導体基板に形成された回路）であってもよいし、処理回路１２の一部のハードウェアとメモリコントローラとの組み合わせにより実現されてもよい。また、管理装置１８は、処理回路１２が実行するオペレーティングシステムの一部の機能により実現されてもよいし、オペレーティングシステムの一部の機能とメモリコントローラとの組み合わせにより実現されてもよい。
【００２５】
また、管理装置１８は、例えば、処理回路１２とは別体のハードウェアで構成されたメモリ管理ユニット（ＭＭＵ）であってもよい。また、管理装置１８は、処理回路１２の一部のハードウェアとメモリ管理ユニットとの組み合わせにより実現されてもよい。また、管理装置１８は、処理回路１２が実行するオペレーティングシステムの一部の機能とメモリ管理ユニットとの組み合わせにより実現されてもよい。
【００２６】
また、管理装置１８は、メモリコントローラと、ＭＭＵ（メモリ管理ユニット）との組み合わせにより実現されてもよい。また、管理装置１８は、処理回路１２の一部のハードウェアと、メモリコントローラと、メモリ管理ユニットとの組み合わせにより実現されてもよい。また、管理装置１８は、処理回路１２が実行するオペレーティングシステムの一部の機能と、メモリコントローラと、メモリ管理ユニットとの組み合わせにより実現されてもよい。
【００２７】
図２は、不揮発記憶部１６の構成を示す図である。不揮発記憶部１６は、複数のページ（第１領域）を含む。ページは、処理回路１２が管理するデータ単位に対応する。ページは、例えば、オペレーティングシステムが管理する仮想記憶装置のページに対応する。ページは、例えば、４Ｋバイトであってよい。
【００２８】
また、複数のページのそれぞれは、複数のキャッシュライン（第２領域）を含む。キャッシュラインは、処理回路１２内のキャッシュメモリに対するデータの書き換え単位に対応する。処理回路１２は、キャッシュラインの単位で、不揮発記憶部１６に対してデータの書き込みおよび読み出しをする。処理回路１２は、ページ単位でもデータの書き込みおよび読み出しが可能である。
【００２９】
キャッシュラインは、例えば、６４バイトである。なお、第２領域は、キャッシュラインよりも小さい単位（例えば、バイト単位）であってもよい。
【００３０】
図３は、アドレス情報の一例を示す図である。管理装置１８は、例えば、処理回路１２から図３に示すような、３つのビットフィールドに分割されたアドレス情報を取得する。
【００３１】
アドレス情報の上位のビットフィールドは、データを書き込むまたはデータを読み出すページ（対象ページ）の位置を示す。アドレス情報の中位のビットフィールドは、対象ページにおける、データを書き込むまたはデータを読み出すキャッシュライン（対象キャッシュライン）の位置を示す。また、アドレス情報の下位のビットフィールドは、対象キャッシュラインにおける、データを書き込むまたはデータを読み出すバイトの位置を示す。
【００３２】
図４は、管理装置１８の構成を示す図である。管理装置１８は、設定記憶部２６と、アクセス処理部２８と、カウンタ記憶部３２と、管理情報記憶部３４と、更新部３６と、ウェアレベリング実行部３８と、管理部４０とを有する。
【００３３】
設定記憶部２６は、変換テーブルを記憶する。変換テーブルは、処理回路１２がアクセス要求をするそれぞれのページについて、要求アドレスと、第１記憶部１４または不揮発記憶部１６における対応するページ番号（物理アドレス）との対応関係を記憶する。
【００３４】
さらに、変換テーブルは、処理回路１２がアクセス要求をするそれぞれのページについて、第１アクセス処理または第２アクセス処理の何れを実行するか示すアクセス方法を記憶する。
【００３５】
第１アクセス処理は、不揮発記憶部１６から第１記憶部１４に転送したデータに対して、書き込みおよび読み出しをする方法である。第２アクセス処理は、不揮発記憶部１６に記憶されるデータに対して直接書き込みおよび読み出しをする方法である。なお、変換テーブルの詳細については、図５を参照して後述する。
【００３６】
アクセス処理部２８は、処理回路１２からの第１記憶部１４および不揮発記憶部１６に対するアクセス要求を処理する。すなわち、アクセス処理部２８は、処理回路１２からの書込命令に応じて、データを第１記憶部１４または不揮発記憶部１６に書き込む。また、アクセス処理部２８は、処理回路１２からの読出命令に応じて、データを第１記憶部１４または不揮発記憶部１６から読み出し、読み出したデータを処理回路１２に与える。
【００３７】
また、アクセス処理部２８は、処理回路１２がアクセス要求をしたページについて、変換テーブルに記憶されたアクセス方法により第１記憶部１４および不揮発記憶部１６にアクセスする。つまり、アクセス処理部２８は、第１アクセス処理に設定されているページに対して書き込みまたは読み出しの要求を受けた場合、第１アクセス処理を実行する。また、アクセス処理部２８は、第２アクセス処理に設定されているページに対して書き込みまたは読み出しの要求を受けた場合、第２アクセス処理を実行する。アクセス方法の詳細については、図５、図６および図７を参照して後述する。
【００３８】
カウンタ記憶部３２は、カウンタテーブルを記憶する。カウンタテーブルは、不揮発記憶部１６に含まれる複数のページのそれぞれについての、データの書き換え回数を表すカウンタ値を格納する。カウンタテーブルの詳細については、図８を参照して後述する。
【００３９】
管理情報記憶部３４は、管理テーブルを記憶する。管理テーブルの詳細については、図９を参照して後述する。
【００４０】
更新部３６は、カウンタテーブルに格納されたそれぞれのカウンタ値、および、管理テーブルを更新する。更新部３６は、処理回路１２が不揮発記憶部１６にデータを書き込んだ場合、書き込んだデータのアドレス情報を取得し、取得したアドレス情報に基づきカウンタテーブルおよび管理テーブルを更新する。更新部３６の具体的な処理手順については、図１０および図１１を参照して後述する。
【００４１】
ウェアレベリング実行部３８は、カウンタ記憶部３２に記憶されたページ毎のカウンタ値に基づき、不揮発記憶部１６に対するウェアレベリング制御を実行する。ウェアレベリング実行部３８は、不揮発記憶部１６における全体の領域に平均的にデータが書き込まれるように、不揮発記憶部１６に記憶されているデータの配置を制御する。なお、ウェアレベリング実行部３８の処理については、図１２を参照して後述する。
【００４２】
管理部４０は、変換テーブルに記憶されたアクセス方法の変更処理を行う。管理部４０は、不揮発記憶部１６に対する書き込み量が設定値より大きい場合、変換テーブルにより管理されている複数のページのうちの第２アクセス処理に設定されている何れかの交換対象ページを選択する。そして、管理部４０は、選択した交換対象ページのアクセス方法を、第２アクセス処理から第１アクセス処理に変更する。なお、管理部４０の詳細な構成および処理については、図１３以降においてさらに説明する。
【００４３】
図５は、変換テーブルの一例を示す図である。変換テーブルは、処理回路１２がアクセス要求をするそれぞれのページについて、要求アドレスと、第１記憶部１４または不揮発記憶部１６における対応するページ番号（物理アドレス）との対応関係を記憶する。すなわち、変換テーブルは、処理回路１２による要求アドレスに対応するデータが、第１記憶部１４または不揮発記憶部１６における何れのページに記憶されているのかを示すマッピング情報を記憶する。
【００４４】
例えば、図５の例では、変換テーブルにおけるページ番号の列に“Ｓｘｘｘｘ”と記述されたページは、不揮発記憶部１６におけるページ番号が“ｘｘｘｘ”のページを示す。例えば、図５の例では、ページ番号の列に“Ｄｘｘｘｘ”と記述されたページは、第１記憶部１４におけるページ番号が“ｘｘｘｘ”のページを示す。なお、ここでのｘは、任意の値である。
【００４５】
さらに、変換テーブルは、処理回路１２がアクセス要求をするそれぞれのページについて、第１アクセス処理または第２アクセス処理の何れを実行するか示すアクセス方法を記憶する。なお、変換テーブルは、図５に示すような構成に限らず、他の構成であってもよい。
【００４６】
図６は、第１アクセス処理および第２アクセス処理の内容を示す図である。アクセス処理部２８は、第１アクセス処理に設定されている第１ページに対して書き込みまたは読み出しの要求を受けた場合、不揮発記憶部１６に対して、第１アクセス処理を実行する。
【００４７】
例えば、図６に示すように、第１アクセス処理において、アクセス処理部２８は、不揮発記憶部１６における第１ページに記憶された全てのデータを転送して、第１記憶部１４に記憶させる。これにより、第１記憶部１４は、不揮発記憶部１６における第１ページに記憶されたデータのコピーを記憶することができる。続いて、第１アクセス処理において、アクセス処理部２８は、第１記憶部１４に記憶されている、不揮発記憶部１６から転送されたデータに対して、読み出しおよび書き込みをする。例えば、アクセス処理部２８は、不揮発記憶部１６から第１記憶部１４に転送されたデータに対して、ページより小さいサイズ（例えばプロセッサのキャッシュラインサイズ）でデータの読み出しおよび書き込みをする。そして、第１アクセス処理において、アクセス処理部２８は、第１記憶部１４の空き容量が無くなり不揮発記憶部１６から第１記憶部１４にデータを転送できなくなった場合、および、第１記憶部１４に記憶させておくことが不要と判断された場合等において、第１記憶部１４に転送されたデータを、不揮発記憶部１６における第１ページに書き戻す。
【００４８】
なお、アクセス処理部２８は、第１記憶部１４に転送されたデータを、第１ページ（同じ場所）以外に書き戻してもよい。例えば、アクセス処理部２８は、第１アクセス処理において、不揮発記憶部１６から第１記憶部１４に転送されたデータを、何れの要求アドレスも対応付けられていない未使用ページに書き戻してよい。これにより、アクセス処理部２８は、ページ毎の書き換え回数の隔たりを小さくし、特定のページの品質劣化を抑制することができる。
【００４９】
また、アクセス処理部２８は、第２アクセス処理に設定されている第２ページに対して書き込みまたは読み出しの要求を受けた場合、不揮発記憶部１６に対して、第２アクセス処理を実行する。
【００５０】
例えば、図６に示すように、第２アクセス処理において、アクセス処理部２８は、不揮発記憶部１６における第２ページに対して、直接読み出しおよび書き込みをする。例えば、アクセス処理部２８は、ページより小さいサイズでデータの読み出しおよび書き込みをする。
【００５１】
このように、アクセス処理部２８は、２種類のアクセス方法により不揮発記憶部１６に対してアクセスする。例えば、メモリアクセスに局所性が高いアプリケーションを実行した場合、アクセス処理部２８は、第１アクセス処理により不揮発記憶部１６に記憶されたページをアクセスする。これにより、アクセス処理部２８は、メモリアクセスに局所性が高いアプリケーションを実行した場合、同一のページに対してより高速に処理をすることができる。
【００５２】
また、例えば、ランダムアクセスのようにメモリアクセスに局所性が低い処理を実行する場合、アクセス処理部２８は、第２アクセス処理により不揮発記憶部１６に記憶されたページをアクセスする。これにより、アクセス処理部２８は、局所性が低い処理を実行する場合、不揮発記憶部１６から第１記憶部１４への転送処理のオーバヘッドを無くして、効率良く処理をすることができる。このように、アクセス処理部２８は、第１アクセス処理および第２アクセス処理の２種類のアクセス方法を用いることにより、処理の効率化を図ることができる。
【００５３】
図７は、第１実施形態に係るアクセス処理部２８によるアクセス処理を示すフローチャートである。第１実施形態に係るアクセス処理部２８は、図７に示すフローチャートに従って、第１記憶部１４および不揮発記憶部１６に対してアクセスをする。
【００５４】
まず、Ｓ１１において、アクセス処理部２８は、処理回路１２からアクセス要求があったか否かを判断する。アクセス処理部２８は、アクセス要求が無い場合（Ｓ１１のＮｏ）、処理をＳ１１で待機する。アクセス処理部２８は、アクセス要求が有った場合（Ｓ１１のＹｅｓ）、処理をＳ１２に進める。
【００５５】
Ｓ１２において、アクセス処理部２８は、変換テーブルを参照して、アクセス要求に含まれる要求アドレスから、第１記憶部１４または不揮発記憶部１６におけるアクセス先となる対象ページのページ番号を特定する。これにより、アクセス処理部２８は、要求アドレスから物理アドレスへのアドレス変換処理を実行することができる。
【００５６】
続いて、Ｓ１３において、アクセス処理部２８は、対象ページに対するアクセス方法が、第１アクセス処理か否かを判断する。対象ページに対するアクセス方法が第１アクセス処理ではない場合、すなわち、アクセス方法が第２アクセス処理である場合（Ｓ１３のＮｏ）、アクセス処理部２８は、処理をＳ１４に進める。Ｓ１４において、アクセス処理部２８は、不揮発記憶部１６における対象ページに直接アクセスする。そして、アクセス処理部２８は、Ｓ１４の処理を終えると本フローを終了する。
【００５７】
また、対象ページに対するアクセス方法が第１アクセス処理である場合（Ｓ１３のＹｅｓ）、アクセス処理部２８は、処理をＳ１５に進める。Ｓ１５において、アクセス処理部２８は、データが第１記憶部１４に転送済みか未転送かを判断する。アクセス処理部２８は、データが第１記憶部１４に転送済みか未転送かを、変換テーブルにおけるページ番号（物理アドレス）を参照することにより判断することができる。転送済みの場合（Ｓ１５のＹｅｓ）、アクセス処理部２８は、処理をＳ１７に進める。
【００５８】
未転送の場合（Ｓ１５のＮｏ）、アクセス処理部２８は、処理をＳ１６に進める。Ｓ１６において、アクセス処理部２８は、対象ページのデータを第１記憶部１４に転送する。さらに、アクセス処理部２８は、変換テーブルにおける転送したデータのページ番号（物理アドレス）を、第１記憶部１４における転送先のページ番号に変更する。アクセス処理部２８は、Ｓ１６の処理を終えると、処理をＳ１７に進める。
【００５９】
Ｓ１７において、アクセス処理部２８は、第１記憶部１４における対象ページにアクセスする。そして、アクセス処理部２８は、Ｓ１７の処理を終えると本フローを終了する。以上のように処理を実行することにより、アクセス処理部２８は、変換テーブルに示されたアクセス方法により第１記憶部１４および不揮発記憶部１６にアクセスすることができる。
【００６０】
図８は、カウンタテーブルの一例を示す図である。カウンタテーブルは、不揮発記憶部１６に含まれる複数のページ（第１領域）のそれぞれについての、データの書き換え回数を表すカウンタ値を格納する。例えば、カウンタテーブルは、不揮発記憶部１６に含まれる複数のページを識別する識別情報（例えばページ番号）のそれぞれに対応させて、カウンタ値を格納する。
【００６１】
それぞれのカウンタ値は、対応するページの書き換え回数の推定値を表してもよい。それぞれのカウンタ値は、工場出荷時等の初期時には、例えば０とされている。それぞれのカウンタ値は、更新部３６により１ずつ増加（インクリメント）されていく。
【００６２】
図９は、管理テーブルの一例を示す図である。管理テーブルは、所定個のエントリを有する。例えば、図９の例において、管理テーブルは、６４個のエントリを有する。
【００６３】
それぞれのエントリには、管理情報を格納することができる。すなわち、管理テーブルは、所定個のページのそれぞれについての管理情報を格納可能である。管理テーブルが格納できる管理情報の数は、不揮発記憶部１６に含まれるページの数より少ない。管理テーブルは、処理回路１２が不揮発記憶部１６における最近アクセスしたページについての管理情報を格納する。管理テーブルは、エントリが一杯となった場合、例えば最も古い管理情報（アクセスしてから最も時間が経過した管理情報）を消去して、新しい管理情報を格納する。
【００６４】
管理情報は、識別情報と、マップ情報とを含む。
【００６５】
識別情報は、その管理情報が管理するページを識別するための番号（ページ番号）である。更新部３６は、識別情報を参照することにより、そのエントリが何れのページを管理している管理情報を格納しているかを判断することができる。
【００６６】
マップ情報は、対応するページに含まれる複数のキャッシュライン（第２領域）のそれぞれが、書き込み済みか未書き込みかを示す。例えば、マップ情報は、対応するページにデータが記憶されていない場合には、対応するページに含まれている複数のキャッシュラインの全ての状態が、未書き込みとなる。管理情報は、対応するページにデータが記憶されていない状態から、何れかのキャッシュラインにデータが書き込まれた場合、そのキャッシュラインの状態が書き込み済みとされ、他のキャッシュラインの状態が未書き込みとされる。
【００６７】
例えば、マップ情報は、ページに含まれる複数のキャッシュラインのそれぞれに対応したビットを含む。例えば、１ページ内に６４個のキャッシュラインが含まれる場合、マップ情報は、６４個のビットを含む。それぞれのビットは、例えば１である場合、対応するキャッシュラインが、書き込み済みであることを示す。また、それぞれのビットは、例えば０である場合、対応するキャッシュラインが、未書き込みであることを示す。
【００６８】
なお、管理テーブルは、全てのエントリに管理情報が格納されていなくてよい。つまり、管理テーブルは、未使用エントリが有ってもよい。
【００６９】
図１０は、更新部３６による処理の流れを示すフローチャートである。更新部３６は、図１０に示すフローチャートに従って、カウンタテーブルおよび管理テーブルを更新する。
【００７０】
まず、Ｓ２１において、更新部３６は、不揮発記憶部１６にデータの書き込みがされるか否かを検出する。更新部３６は、書き込みがされない場合（Ｓ２１のＮｏ）、処理をＳ２１で待機し、書き込みがされる場合（Ｓ２１のＹｅｓ）、処理をＳ２２に進める。
【００７１】
Ｓ２２において、更新部３６は、書き込み対象のデータ（第１データ）が書き込まれるページである対象ページ（対象第１領域）についての管理情報が、管理テーブルに存在するか否かを判断する。
【００７２】
管理テーブルに対象ページについての管理情報が存在しない場合（Ｓ２２のＮｏ）、更新部３６は、処理をＳ２３に進める。Ｓ２３において、更新部３６は、管理情報生成処理を実行する。管理情報生成処理については、図１１を参照して説明する。更新部３６は、管理情報生成処理を終了した場合、本フローを終了し、次の書き込みを待機する。
【００７３】
管理テーブルに対象ページについての管理情報が存在する場合（Ｓ２２のＹｅｓ）、更新部３６は、処理をＳ２４に進める。
【００７４】
Ｓ２４において、更新部３６は、対象ページにおける管理情報を参照して、第１データが書き込まれるキャッシュラインである対象キャッシュライン（対象第２領域）の状態が、書き込み済みであるか否かを判断する。例えば、更新部３６は、対象ページについての管理情報におけるマップ情報を参照して、対象キャッシュラインに対応するビットが１であるか否かを判断する。
【００７５】
更新部３６は、対象キャッシュラインの状態が未書き込みの場合（Ｓ２４のＮｏ）、処理をＳ２５に進める。Ｓ２５において、更新部３６は、対象ページについての管理情報に示された対象キャッシュラインの状態を、未書き込みから、書き込み済みに変更する。例えば、更新部３６は、対応するビットを、０から１に変更する。これにより、更新部３６は、第１データが書き込まれた後の不揮発記憶部１６の状態を、管理テーブルに反映することができる。更新部３６は、Ｓ２５の処理を終了した場合、本フローを終了し、次の書込を待機する。
【００７６】
更新部３６は、対象キャッシュラインの状態が書き込み済みの場合、例えば、対象キャッシュラインに対応するビットが１である場合（Ｓ２４のＹｅｓ）、処理をＳ２６に進める。Ｓ２６において、更新部３６は、対象ページについての管理情報に示された対象キャッシュライン以外のキャッシュラインの状態を、未書き込みに変更する。つまり、更新部３６は、対象ページについての管理情報に示された対象キャッシュラインのみを書き込み済みとし、他のキャッシュラインを未書き込みとする。例えば、更新部３６は、対応するビットのみを１とし、他のビットを０とする。
【００７７】
これにより、更新部３６は、対象キャッシュラインに対して第１データを書き込んだ後の不揮発記憶部１６の状態を、管理テーブルに反映することができる。
【００７８】
更新部３６は、Ｓ２６を終了すると、Ｓ２７に処理を進める。Ｓ２７において、更新部３６は、対象ページについてのカウンタ値を更新する。例えば、更新部３６は、カウンタテーブルにおける、アドレス情報に含まれるページ番号に対応するカウンタ値を、１増加させる。これにより、更新部３６は、対象ページの書き換え回数を更新することができる。
【００７９】
なお、更新部３６は、Ｓ２６とＳ２７の処理を逆に実行してもよい。更新部３６は、Ｓ２６およびＳ２７の処理を終了した場合、本フローを終了し、次の書込を待機する。
【００８０】
図１１は、更新部３６による管理情報生成処理の流れを示すフローチャートである。更新部３６は、図１０のＳ２３における管理情報生成処理において、図１１に示すＳ３１からＳ３５の処理を実行する。
【００８１】
まず、Ｓ３１において、更新部３６は、管理テーブルに未使用エントリが有るか否かを判断する。つまり、更新部３６は、管理情報が格納されていないエントリが、管理テーブルに存在するか否かを判断する。
【００８２】
未使用エントリが有る場合（Ｓ３１のＹｅｓ）、更新部３６は、処理をＳ３２に進める。Ｓ３２において、更新部３６は、未使用エントリに対象ページについての管理情報を書き込む。つまり、更新部３６は、対象ページを識別する識別情報と、対象キャッシュラインのみを書き込み済みとし、他の領域を未書き込みとしたマップ情報とを含む管理情報を、未使用エントリに書き込む。
【００８３】
これにより、更新部３６は、第１データが書き込まれた後の不揮発記憶部１６の状態を管理テーブルに反映することができる。更新部３６は、Ｓ３２の処理を終了した場合、処理を図１０のフローに戻す。
【００８４】
未使用エントリが無い場合（Ｓ３１のＮｏ）、更新部３６は、処理をＳ３３に進める。Ｓ３３において、更新部３６は、管理テーブルから、何れかの使用中エントリを選択する。例えば、更新部３６は、最も古い管理情報を格納した使用中エントリを選択する。なお、更新部３６は、他のアルゴリズムに従って何れかの使用中エントリを選択してもよい。
【００８５】
更新部３６は、Ｓ３３を終了すると、Ｓ３４に処理を進める。Ｓ３４において、更新部３６は、選択した使用中エントリに書き込まれている管理情報を消去して、対象ページについての管理情報を書き込む。つまり、更新部３６は、選択した使用中エントリに、対象ページを識別する識別情報と、対象キャッシュラインのみを書き込み済みとし、他の領域を未書き込みとしたマップ情報とを含む管理情報を、上書きする。
【００８６】
これにより、更新部３６は、選択した管理情報（例えば最も古い管理情報）を管理テーブルから消去して、新たな管理情報を管理テーブルに格納することができる。そして、更新部３６は、第１データが書き込まれた後の不揮発記憶部１６の状態を管理テーブルに反映することができる。
【００８７】
更新部３６は、Ｓ３４を終了すると、Ｓ３５に処理を進める。Ｓ３５において、更新部３６は、管理テーブルから消去した管理情報により管理されていたページについてのカウンタ値を更新する。例えば、更新部３６は、カウンタテーブルにおける、消去する管理情報に含まれていたページ番号に対応するカウンタ値を、１増加させる。
【００８８】
Ｓ３５の処理を実行することにより、更新部３６は、管理テーブルを用いた管理を終了したページについて、データを追記したと仮定して、書き込み回数を更新することができる。これにより、更新部３６は、管理テーブルによりアクティブに管理がされていないページについて、書き込み回数を推定することができる。
【００８９】
なお、更新部３６は、Ｓ３４とＳ３５の処理を逆に実行してもよい。更新部３６は、Ｓ３４およびＳ３５の処理を終了した場合、処理を図１０のフローに戻す。
【００９０】
以上のように、管理装置１８は、不揮発記憶部１６に含まれるページの数より少ない数の管理情報を記憶する。これにより、管理装置１８によれば、管理テーブルのエントリ数を少なくすることができるので、管理情報記憶部３４の記憶容量を少なくすることができる。
【００９１】
さらに、管理装置１８は、管理テーブルにより管理されていないページについては、管理テーブルから管理情報が消去されたタイミングでカウンタ値を更新する。これにより、管理装置１８によれば、不揮発記憶部１６に含まれる全てのページについての書き込み回数を精度良く推定することができる。
【００９２】
図１２は、ウェアレベリング実行部３８によるウェアレベリング処理の流れを示すフローチャートである。ウェアレベリング実行部３８は、図１２に示すフローチャートに従って、ウェアレベリングを実行する。
【００９３】
例えば、ウェアレベリング実行部３８は、定期的に、図１２に示すウェアレベリングを実行する。例えば、ウェアレベリング実行部３８は、カウンタテーブルにおけるカウンタ値が所定回更新される毎に、ウェアレベリングを実行する。
【００９４】
まず、Ｓ４１において、ウェアレベリング実行部３８は、カウンタテーブルを参照して、カウンタ値が大きい方から所定個のページを選択する。続いて、Ｓ４２において、ウェアレベリング実行部３８は、カウンタテーブルを参照して、カウンタ値が小さい方から同数のページを選択する。
【００９５】
続いて、Ｓ４３において、ウェアレベリング実行部３８は、不揮発記憶部１６における、カウンタ値が大きい方から所定個のページに記録されているデータと、カウンタ値が小さい方から所定個のページに記録されているデータとのページ位置を交換する。さらに、Ｓ４３において、ウェアレベリング実行部３８は、変換テーブルにおける、ページ位置を変更したデータの物理アドレスを示すページ番号を修正する。
【００９６】
以上の処理を実行することにより、ウェアレベリング実行部３８は、ページ毎の書き換え回数に基づき、不揮発記憶部１６における全体の領域に平均的にデータが書き込まれるように、データの書き込み位置を制御することができる。なお、ウェアレベリング実行部３８は、図１２に示したフローチャートとは異なる処理によりウェアレベリングを実行してもよい。
【００９７】
図１３は、管理部４０の構成を示す図である。管理部４０は、判定部５２と、選択部５４と、変更部５６とを含む。
【００９８】
判定部５２は、不揮発記憶部１６に対する書き込み量を検出する。そして、判定部５２は、不揮発記憶部１６に対する書き込み量が設定値より大きいか否かを判定する。例えば、判定部５２は、所定期間毎に不揮発記憶部１６に対する書き込み回数を検出し、所定期間における書き込み回数が、設定値である第１閾値より大きいか否かを判定する。
【００９９】
選択部５４は、不揮発記憶部１６に対する書き込み量が設定値より大きい場合、不揮発記憶部１６に含まれる複数のページのうちの第２アクセス処理に設定されている何れかのページを、交換対象ページとして選択する。例えば、選択部５４は、アクセス方法を第１アクセス処理に変更することにより、不揮発記憶部１６に対する書き込み量（例えば所定期間における書き込み回数）が減少するページを交換対象ページとして選択する。
【０１００】
変更部５６は、選択された交換対象ページのアクセス方法を、第２アクセス処理から第１アクセス処理に変更する。具体的には、変更部５６は、変換テーブルにおける選択された交換対象ページのアクセス方法を、第１アクセス処理に変更する。
【０１０１】
図１４は、第１実施形態に係る管理部４０による処理を示すフローチャートである。管理部４０は、図１４に示すフローチャートに従って処理を行って、不揮発記憶部１６に対する書き込み量を調整する。
【０１０２】
まず、Ｓ５１において、管理部４０は、第２アクセス処理による不揮発記憶部１６への書き込み回数を検出する。続いて、Ｓ５２において、管理部４０は、所定期間が経過したか否かを判断する。所定期間が経過していない場合（Ｓ５２のＮｏ）、管理部４０は、Ｓ５１の検出処理を実行し続ける。所定期間が経過した場合（Ｓ５２のＹｅｓ）、管理部４０は、処理をＳ５３に進める。
【０１０３】
Ｓ５３において、管理部４０は、所定期間の不揮発記憶部１６に対する書き込み回数が、予め設定された第１閾値より大きいか否かを判断する。書き込み回数が第１閾値より大きくない場合（Ｓ５３のＮｏ）、管理部４０は、処理をＳ５６に進める。書き込み回数が第１閾値より大きい場合（Ｓ５３のＹｅｓ）、管理部４０は、処理をＳ５４に進める。
【０１０４】
Ｓ５４において、管理部４０は、不揮発記憶部１６に含まれる複数のページのうちの第２アクセス処理に設定されている何れかのページを、交換対象ページとして選択する。なお、交換対象ページの選択処理の具体例については、図１６から図２３を参照して後述する。
【０１０５】
続いて、Ｓ５５において、管理部４０は、変換テーブルにアクセスして、選択した交換対象ページのアクセス方法を、第２アクセス処理から第１アクセス処理に変更する。
【０１０６】
続いて、Ｓ５６において、管理部４０は、書き込み回数を例えば０にリセットして、処理をＳ５１に戻す。これにより、管理部４０は、次の所定期間での不揮発記憶部１６に対する書き込み回数を検出することができる。そして、管理部４０は、次の所定期間においてＳ５１からＳ５６の処理を実行する。このように管理部４０は、所定期間毎に不揮発記憶部１６に対する書き込み回数を検出し、所定期間における書き込み回数が第１閾値より大きい場合、交換対象ページのアクセス方法を、第２アクセス処理から第１アクセス処理に変更することができる。
【０１０７】
図１５は、変換テーブルに対するアクセス方法の変更処理を説明するための図である。例えば、ある期間において、第２アクセス処理による不揮発記憶部１６に対する書き込み回数が第１閾値より大きい場合、管理部４０は、変換テーブルに登録されているページであって、第２アクセス処理に設定されている１つのページを交換対象ページとして選択する。例えば、図１５の例であれば、管理部４０は、ページ番号が“Ｓ０００５”のページを、交換対象ページとして選択した。そして、管理部４０は、選択した交換対象ページにおけるアクセス方法を、第２アクセス処理から第１アクセス処理に変更する。
【０１０８】
その後、アクセス処理部２８は、処理回路１２からページ番号が“Ｓ０００５”のページに対してアクセス要求を受ける。この場合、アクセス処理部２８は、ページ番号が“Ｓ０００５”のページに対して第１アクセス処理を実行する。図１５の例であれば、アクセス処理部２８は、ページ番号が“Ｓ０００５”のページのデータを、第１記憶部１４のページ番号が“Ｄ０００３”のページにコピーする。さらに、アクセス処理部２８は、変換テーブルのページ番号を、“Ｓ０００５”から“Ｄ０００３”に変更する。そして、アクセス処理部２８は、このページに含まれるデータに対する書き込みおよび読み出しを、第１記憶部１４のページ番号が“Ｄ０００３”のページに対して行う。
【０１０９】
このように、管理部４０は、不揮発記憶部１６に対する書き込み量が設定値より大きい場合、不揮発記憶部１６に対する書き込み量を減らすことができる。例えば、管理部４０は、同一のアドレスに対して繰り返してデータの書き込みがされるような局所的なアクセスがされるページを交換対象ページとして選択する。これにより、管理部４０は、不揮発記憶部１６に対する書き込み量を効率良く減らすことができる。
【０１１０】
図１６は、交換対象ページの選択処理の第１例を示すフローチャートである。図１７は、管理テーブルにおいて、書き込み済みを示すビットの個数が最も多いエントリを示す図である。
【０１１１】
管理部４０は、図１６に示すフローチャートに従って交換対象ページを選択する。まず、Ｓ６１において、管理部４０は、管理テーブルにおける各エントリについて、書き込み済みのキャッシュラインの個数を算出する。例えば、管理部４０は、マップ情報におけるビットが１とされたキャッシュラインの個数を算出する。
【０１１２】
続いて、Ｓ６２において、管理部４０は、書き込み済みのキャッシュラインの個数が最大のエントリを検出する。例えば、図１７の例であれば、管理部４０は、１とされたビットが最も多いエントリ番号が０のエントリを検出する。続いて、Ｓ６３において、管理部４０は、検出したエントリに登録されているページを、交換対象ページとして選択する。これにより、管理部４０は、管理テーブルにより管理情報が格納されているページであって、書き込み済みのキャッシュライン（第２領域）の個数が最も多いページを、交換対象ページとして選択することができる。
【０１１３】
続いて、Ｓ６４において、管理部４０は、管理テーブルにおける交換対象ページの管理情報を消去する。そして、Ｓ６５において、管理部４０は、カウンタテーブルにアクセスして、交換対象ページのカウンタ値を更新する。例えば、管理部４０は、カウンタテーブルにアクセスして、交換対象ページのカウンタ値を１増加させる。管理部４０は、Ｓ６５の処理を終えると本フローを終了する。
【０１１４】
以上の処理により、管理部４０は、不揮発記憶部１６に対する書き込み量の多いページを交換対象ページとして選択することができる。これにより、管理部４０は、不揮発記憶部１６に対する書き込み量を減らすことができる。
【０１１５】
図１８は、交換対象ページの選択処理の第２例を示すフローチャートである。図１９は、管理テーブルにおいて、書き込み済みを示すビットの個数が所定値以上のエントリを示す図である。
【０１１６】
管理部４０は、図１８に示すフローチャートに従って交換対象ページを選択してもよい。まず、Ｓ７１において、管理部４０は、管理テーブルにおける各エントリについて、書き込み済みのキャッシュラインの個数を算出する。
【０１１７】
続いて、Ｓ７２において、管理部４０は、書き込み済みのキャッシュラインの個数が所定値以上のエントリを検出する。例えば、図１９の例であれば、管理部４０は、エントリ番号が０およびエントリ番号が６３の２つのエントリを検出する。続いて、Ｓ７３において、管理部４０は、検出したエントリの中から所定数のページを交換対象ページとして選択する。これにより、管理部４０は、管理テーブルにより管理情報が格納されているページであって、書き込み済みのキャッシュライン（第２領域）の個数が所定値以上の少なくとも１つのページの中から、交換対象ページを選択することができる。
【０１１８】
続いて、Ｓ７４において、管理部４０は、管理テーブルにおける交換対象ページの管理情報を消去する。そして、Ｓ７５において、管理部４０は、カウンタテーブルにアクセスして、交換対象ページのカウンタ値を更新する。管理部４０は、Ｓ７５の処理を終えると本フローを終了する。
【０１１９】
以上の処理により、管理部４０は、書き込み回数の多いページを交換対象ページとして選択することができる。ただし、管理部４０は、書き込み量の多いページであっても現時点で所定値以上の書き込みがされていなければ、さらに書き込みをする余裕があるので、交換対象ページとして選択しない。これにより、管理部４０は、不揮発記憶部１６の記憶領域を効率良く使用しながら、不揮発記憶部１６に対する書き込み量を減らすことができる。
【０１２０】
図２０は、交換対象ページの選択処理の第３例を示すフローチャートである。図２１は、カウンタテーブルにおいて、カウンタ値が最大のページを示す図である。
【０１２１】
管理部４０は、図２０に示すフローチャートに従って交換対象ページを選択してもよい。まず、Ｓ８１において、管理部４０は、カウンタテーブルの中から、カウンタ値が最大のページを検出する。例えば、図２１の例であれば、管理部４０は、カウンタ値が５のページを検出する。
【０１２２】
続いて、Ｓ８２において、管理部４０は、検出したページを、交換対象ページとして選択する。これにより、管理部４０は、カウンタ値が最大のページを交換対象ページとして選択することができる。
【０１２３】
続いて、Ｓ８３において、管理部４０は、交換対象ページの管理情報が管理テーブルに存在するか否かを判断する。交換対象ページの管理情報が管理テーブルに存在しない場合（Ｓ８３のＮｏ）、管理部４０は、本フローを終了する。
【０１２４】
交換対象ページの管理情報が管理テーブルに存在する場合（Ｓ８３のＹｅｓ）、管理部４０は、処理をＳ８４に進める。続いて、Ｓ８４において、管理部４０は、管理テーブルにおける交換対象ページの管理情報を消去する。そして、Ｓ８５において、管理部４０は、カウンタテーブルにアクセスして、交換対象ページのカウンタ値を更新する。管理部４０は、Ｓ８５の処理を終えると本フローを終了する。
【０１２５】
以上の処理により、管理部４０は、書き換え回数の多いページを交換対象ページとして選択することができる。これにより、管理部４０は、不揮発記憶部１６に対する書き込み量を減らすことができる。
【０１２６】
図２２は、交換対象ページの選択処理の第４例を示すフローチャートである。図２３は、管理テーブルにおいて書き込み済みを示すビットの個数が所定値より小さいページを除いたページの中で、カウンタテーブルにおいてカウンタ値が最大のページを示す図である。
【０１２７】
管理部４０は、図２２に示すフローチャートに従って交換対象ページを選択してもよい。まず、Ｓ９１において、管理部４０は、カウンタテーブルの中から、カウンタ値が最大のページを検出する。
【０１２８】
続いて、Ｓ９２において、管理部４０は、検出したページの管理情報が管理テーブルに存在するか否かを判断する。検出したページの管理情報が管理テーブルに存在しない場合（Ｓ９２のＮｏ）、管理部４０は、処理をＳ９３に進める。Ｓ９３において、管理部４０は、カウンタテーブルの中から、次にカウンタ値が大きいページを検出する。続いて、処理をＳ９２に戻して、管理部４０は、次にカウンタ値が大きいページの管理情報が管理テーブルに存在するか否かを判断する。そして、管理部４０は、管理テーブルに管理情報が存在するページを検出するまで、Ｓ９２およびＳ９３の処理を繰り返す。
【０１２９】
検出したページの管理情報が管理テーブルに存在した場合（Ｓ９２のＹｅｓ）、管理部４０は、処理をＳ９４に進める。Ｓ９４において、管理部４０は、管理テーブルにおける検出したページのエントリについて、書き込み済みのキャッシュラインの個数を検出する。続いて、Ｓ９５において、管理部４０は、検出した書き込み済みのキャッシュラインの個数が所定値以上であるか否かを判断する。書き込み済みのキャッシュラインの個数が所定値以上ではない場合（Ｓ９５のＮｏ）、管理部４０は、処理をＳ９３に戻し、管理テーブルに管理情報が存在する、次にカウンタ値が大きいページを検出する。
【０１３０】
書き込み済みのキャッシュラインの個数が所定値以上である場合（Ｓ９５のＹｅｓ）、管理部４０は、処理をＳ９６に進める。Ｓ９６において、管理部４０は、検出したページを、交換対象ページとして選択する。これにより、管理部４０は、管理テーブルにおける書き込み済みのキャッシュライン（第２領域）の個数が所定値より小さいページを除いたページの中で、カウンタ値が最大のページを、交換対象ページとして選択することができる。
【０１３１】
例えば、図２３の例であれば、管理部４０は、ページ番号が“０００３”のページを交換対象ページとして選択する。図２３の例では、ページ番号が“０００１”および“０００２”のページのカウンタ値は、ページ番号が“０００３”のページより大きい。しかし、ページ番号が“０００１”および“０００２”のページは、書き込み済みのキャッシュライの個数が所定値（例えば２）より小さいので、交換対象ページとしては選択されない。
【０１３２】
続いて、Ｓ９７において、管理部４０は、管理テーブルにおける交換対象ページの管理情報を消去する。そして、Ｓ９８において、管理部４０は、カウンタテーブルにアクセスして、交換対象ページのカウンタ値を更新する。管理部４０は、Ｓ９８の処理を終えると本フローを終了する。
【０１３３】
以上の処理により、管理部４０は、書き込み回数の多いページを交換対象ページとして選択することができる。ただし、管理部４０は、書き込み回数の多いページであっても現時点で所定値以上の書き込みが無ければ、例えば直前にウェアレベリングが行われその結果書き込み回数が多かったこのページに現在は書き込み回数が少ない要求アドレスが割り当てられているなどの可能性もあるため、交換対象ページとして選択しない。これにより、管理部４０は、不揮発記憶部１６の記憶領域を効率良く使用しながら、不揮発記憶部１６に対する書き込み量を減らすことができる。
【０１３４】
以上、図１６〜図２３を参照して、交換対象ページの選択処理について説明した。管理部４０は、以上の方法以外で交換対象ページを選択してもよい。例えば、管理部４０は、カウンタテーブルにおけるカウンタ値と、管理情報における書き込み済みのキャッシュライン（第２領域）の個数との乗算値が最大のページを、交換対象ページとして選択してもよい。また、管理部４０は、カウンタテーブルにおけるカウンタ値と、管理情報における書き込み済みのキャッシュライン（第２領域）の個数との乗算値が所定値以上の少なくとも１つのページの中から、交換対象ページを選択してもよい。このようにしても、管理部４０は、不揮発記憶部１６に対する書き込み量を減らすことができる。
【０１３５】
以上のように、本実施形態に係る管理装置１８は、不揮発記憶部１６に対する書き込み量が設定値より大きい場合、不揮発記憶部１６に含まれる複数のページのうちの第２アクセス処理に設定されている何れかの交換対象ページを選択し、交換対象ページのアクセス方法を、第２アクセス処理から第１アクセス処理に変更する。これにより、管理装置１８では、不揮発記憶部１６に対する書き込み量が設定値より大きい場合、不揮発記憶部１６に対する書き込み量を少なくすることができる。従って、管理装置１８によれば、不揮発記憶部１６に対する書き込み量を調整して、不揮発記憶部１６の寿命を適切な長さに制御することができる。
【０１３６】
（第２実施形態）
つぎに、第２実施形態に係る情報処理装置１０について説明する。
【０１３７】
図２４は、第２実施形態に係る管理部４０による処理を示すフローチャートである。第２実施形態において、管理部４０は、図２４に示す処理を実行する。
【０１３８】
まず、Ｓ１０１において、管理部４０は、第２アクセス処理による不揮発記憶部１６への書き込み回数を検出する。続いて、Ｓ１０２において、管理部４０は、所定期間が経過したか否かを判断する。所定期間が経過していない場合（Ｓ１０２のＮｏ）、管理部４０は、Ｓ１０１の検出処理を実行し続ける。所定期間が経過した場合（Ｓ１０２のＹｅｓ）、管理部４０は、処理をＳ１０３に進める。
【０１３９】
Ｓ１０３において、管理部４０は、所定期間の不揮発記憶部１６に対する書き込み回数が、予め設定された第１閾値より大きいか否かを判断する。書き込み回数が第１閾値より大きい場合（Ｓ１０３のＹｅｓ）、管理部４０は、処理をＳ１０４に進める。
【０１４０】
Ｓ１０４において、管理部４０は、不揮発記憶部１６に含まれる複数のページのうちの第２アクセス処理に設定されている何れかのページを、交換対象ページとして選択する。なお、交換対象ページの選択処理は、第１実施形態と同様である。
【０１４１】
続いて、Ｓ１０５において、管理部４０は、変換テーブルにアクセスして、選択した交換対象ページのアクセス方法を、第２アクセス処理から第１アクセス処理に変更する。Ｓ１０５を終えると、管理部４０は、処理をＳ１０９に進める。
【０１４２】
また、書き込み回数が第１閾値より大きくない場合（Ｓ１０３のＮｏ）、管理部４０は、処理をＳ１０６に進める。Ｓ１０６において、管理部４０は、所定期間の不揮発記憶部１６に対する書き込み回数が、予め設定された第２閾値より小さいか否かを判断する。第２閾値は、第１閾値より小さい。
【０１４３】
書き込み回数が第２閾値より小さくない場合（Ｓ１０６のＮｏ）、管理部４０は、処理をＳ１０９に進める。書き込み回数が第２閾値より小さい場合（Ｓ１０６のＹｅｓ）、管理部４０は、処理をＳ１０７に進める。
【０１４４】
Ｓ１０７において、管理部４０は、第１アクセス処理に設定されている何れかのページを、退避対象ページとして選択する。例えば、管理部４０は、第１記憶部１４にデータがコピーされているページのうち、アクセス数が最も少ないページを退避対象ページとして選択する。これに代えて、管理部４０は、第１記憶部１４にデータがコピーされているページのうち、最も古いページ（アクセスしてから最も時間が経過したページ）を退避対象ページとして選択してもよい。
【０１４５】
続いて、Ｓ１０８において、管理部４０は、変換テーブルにアクセスして、選択した退避対象ページのアクセス方法を、第１アクセス処理から第２アクセス処理に変更する。さらに、管理部４０は、退避対象ページの退避処理をする。具体的には、管理部４０は、第１記憶部１４における退避対象ページのデータを、不揮発記憶部１６における元のページ（または空ページ）に転送させる。さらに、管理部４０は、変換テーブルにアクセスして、退避対象ページのページ番号を、転送後のページ番号に変更する。Ｓ１０８を終えると、管理部４０は、処理をＳ１０９に進める。
【０１４６】
最後に、Ｓ１０９において、管理部４０は、書き込み回数を例えば０にリセットして、処理をＳ１０１に戻す。これにより、管理部４０は、次の所定期間での不揮発記憶部１６に対する書き込み回数を検出することができる。そして、管理部４０は、次の所定期間においてＳ１０１からＳ１０９の処理を実行する。
【０１４７】
このように管理部４０は、所定期間毎に不揮発記憶部１６に対する書き込み回数を検出することができる。そして、管理部４０は、所定期間の書き込み回数が第１閾値より大きい場合、交換対象ページのアクセス方法を、第２アクセス処理から第１アクセス処理に変更することができる。さらに、管理部４０は、所定期間の書き込み回数が第２閾値より小さい場合、退避対象ページのアクセス方法を、第１アクセス処理から第２アクセス処理に変更することができる。
【０１４８】
図２５は、第２実施形態における第１記憶部１４のメモリ使用量の変化の一例を示す図である。図２５に示すように、管理部４０は、所定期間毎に不揮発記憶部１６に対する書き込み回数を検出する。
【０１４９】
例えば、時刻ｔ１および時刻ｔ２のように、管理部４０は、書き込み回数が第１閾値より大きい場合、一部のページのアクセス方法を、第２アクセス処理から第１アクセス処理に変更する。これにより、管理部４０は、第１記憶部１４のメモリ使用量を増加させることができる。言い換えれば、管理部４０は、第１記憶部１４の使用コスト（例えば消費電力）と引き換えに不揮発記憶部１６の寿命を長くすることができる。
【０１５０】
また、例えば、時刻ｔ４のように、管理部４０は、書き込み回数が第２閾値より小さい場合、一部のページのアクセス方法を、第１アクセス処理から第２アクセス処理に変更する。これにより、管理部４０は、第１記憶部１４のメモリ使用量を減少させることができる。言い換えれば、管理部４０は、不揮発記憶部１６の寿命へ大きく影響しない範囲で第１記憶部１４の使用コスト（例えば消費電力）を小さくすることができる。
【０１５１】
そして、時刻ｔ３、時刻ｔ５および時刻ｔ６のように、管理部４０は、書き込み回数が第１閾値以下第２閾値以上の場合、何れのページのアクセス方法も変更しない。これにより、管理部４０は、第１記憶部１４のメモリ使用量を変更させないようにすることができる。
【０１５２】
このように第２実施形態に係る管理装置１８は、第１記憶部１４への書き込み回数が一定の範囲内となるようにアクセス方法（つまり第１記憶部１４のメモリ使用量）を制御する。これにより、第２実施形態に係る管理装置１８によれば、不揮発記憶部１６の寿命を適切な長さに制御するとともに、第１記憶部１４の使用コストを小さくすることができる。
【０１５３】
（第３実施形態）
つぎに、第３実施形態に係る情報処理装置１０について説明する。
【０１５４】
図２６は、第３実施形態に係る管理部４０による処理を示すフローチャートである。第３実施形態において、管理部４０は、図２６に示す処理を実行する。
【０１５５】
まず、Ｓ１１１において、管理部４０は、検出タイミングであるか否かを判断する。例えば、管理部４０は、所定期間が経過したか否かを判断してもよい。検出タイミングではない場合（Ｓ１１１のＮｏ）、管理部４０は、Ｓ１１１で処理を待機する。検出タイミングとなった場合（Ｓ１１１のＹｅｓ）、管理部４０は、処理をＳ１１２に進める。
【０１５６】
続いて、Ｓ１１２において、管理部４０は、第２アクセス処理による不揮発記憶部１６への最大の累積書き換え回数を検出する。例えば、管理部４０は、管理装置１８が工場出荷されてからの現時点までの最も多く書き換えがされたページにおける書き換え回数を検出する。本実施形態においては、管理部４０は、カウンタテーブルを参照して、最大のカウンタ値を取得する。
【０１５７】
続いて、Ｓ１１３において、管理部４０は、目標範囲の上限値および下限値を取得する。目標範囲の上限値および下限値は、管理装置１８の工場出荷時において最小値となり、工場出荷時からの稼働時間が長くなるほど大きくなる。例えば、管理部４０は、工場出荷時からの経過時間に、所定値（単位時間当たりの目標書き換え回数）を乗じて現時点の目標の書き換え回数を算出する。そして、管理部４０は、現時点の目標の書き換え回数に所定マージン値を加算して上限値を算出し、現時点の目標の書き換え回数から所定マージン値を減算して下限値を算出してもよい。
【０１５８】
続いて、Ｓ１１４において、管理部４０は、累積書き換え回数（例えば最大のカウンタ値）が、目標範囲の上限値より大きいか否かを判断する。累積書き換え回数が上限値より大きい場合（Ｓ１１４のＹｅｓ）、管理部４０は、処理をＳ１１５に進める。
【０１５９】
Ｓ１１５において、管理部４０は、不揮発記憶部１６に含まれる複数のページのうちの第２アクセス処理に設定されている何れかのページを、交換対象ページとして選択する。なお、交換対象ページの選択処理は、第１実施形態と同様である。
【０１６０】
続いて、Ｓ１１６において、管理部４０は、変換テーブルにアクセスして、選択した交換対象ページのアクセス方法を、第２アクセス処理から第１アクセス処理に変更する。Ｓ１１６を終えると、管理部４０は、処理をＳ１１１に戻す。
【０１６１】
また、累積書き換え回数が上限値より大きくない場合（Ｓ１１４のＮｏ）、管理部４０は、処理をＳ１１７に進める。Ｓ１１７において、管理部４０は、累積書き換え回数が目標範囲の下限値より小さいか否かを判断する。
【０１６２】
累積書き換え回数が目標範囲の下限値より小さくない場合（Ｓ１１７のＮｏ）、管理部４０は、処理をＳ１１１に戻す。累積書き換え回数が、目標範囲の下限値より小さい場合（Ｓ１１７のＹｅｓ）、管理部４０は、処理をＳ１１８に進める。
【０１６３】
Ｓ１１８において、管理部４０は、第１アクセス処理に設定されている何れかのページを、退避対象ページとして選択する。退避対象ページの選択方法は、第２実施形態と同様である。
【０１６４】
続いて、Ｓ１１９において、管理部４０は、変換テーブルにアクセスして、選択した退避対象ページのアクセス方法を、第１アクセス処理から第２アクセス処理に変更する。さらに、管理部４０は、退避対象ページの退避処理をする。具体的には、管理部４０は、第１記憶部１４における退避対象ページのデータを、不揮発記憶部１６における元のページ（または空ページ）に転送させる。さらに、管理部４０は、変換テーブルにアクセスして、退避対象ページのページ番号を、転送後のページ番号に変更する。Ｓ１１９を終えると、管理部４０は、処理をＳ１１１に戻す。
【０１６５】
そして、管理部４０は、Ｓ１１１に処理が戻されると、次の所定期間においてＳ１１１からＳ１１９の処理を実行する。
【０１６６】
このように管理部４０は、所定期間毎に、最も多く書き換えがされたページにおける書き換え回数（例えば、最大のカウンタ値）を検出することができる。そして、管理部４０は、累積書き換え回数が目標範囲の上限値より大きい場合、交換対象ページのアクセス方法を、第２アクセス処理から第１アクセス処理に変更することができる。さらに、管理部４０は、累積書き換え回数が目標範囲の下限値より小さい場合、退避対象ページのアクセス方法を、第１アクセス処理から第２アクセス処理に変更することができる。
【０１６７】
図２７は、不揮発記憶部１６のアドレス毎の書き換え回数、および、経過時間毎の最大の書き換え回数を示す図である。
【０１６８】
図２７のＡに示すように、不揮発記憶部１６は、ページ毎（アドレス毎）に、書き換え回数にばらつきが生じる。例えば、不揮発記憶部１６は、局所的な書き込みがされた場合、特定のページの書き換え回数が増えてしまう。図２７のＡの例では、時刻ｔ１にアドレスａ１のページの書き換え回数が最大となり、時刻ｔ２にアドレスａ２のページの書き換え回数が最大となり、時刻ｔ３にアドレスａ３のページの書き換え回数が最大となっている。
【０１６９】
管理部４０は、不揮発記憶部１６の保証期間に達するまでは、最大の書き換え回数が、保証回数を超えないように、不揮発記憶部１６に対する書き込みを管理しなければならない。そこで、管理部４０は、所定期間毎に、最大の書き換え回数（最大のカウンタ値）が、予め設定された目標範囲の上限値より大きい場合、交換対象ページのアクセス方法を、第２アクセス処理から第１アクセス処理に変更する。
【０１７０】
例えば、図２７のＢの時刻ｔ１のように、最大の書き換え回数の増加ペースが予め設定されたペースより速い場合、管理部４０は、交換対象ページのアクセス方法を、第２アクセス処理から第１アクセス処理に変更する。これにより、不揮発記憶部１６に対する書き換え回数の増加ペースは、小さくなる。従って、管理部４０は、保証期間に達する前に最大の書き換えが保証回数を超えないように、不揮発記憶部１６に対する書き込みを管理することができる。
【０１７１】
一方、管理部４０は、第１記憶部１４のメモリ使用量をなるべく少なくして、メモリアクセスによる電力消費を減らすように、不揮発記憶部１６に対する書き込みを管理することが望ましい。そこで、管理部４０は、許容される範囲内で、不揮発記憶部１６に対する書き換え回数が最も多くなるように、不揮発記憶部１６に対する書き込みを管理する。このため、管理部４０は、所定期間毎に、最大の書き換え回数が、予め設定された目標範囲の下限値より小さい場合、退避対象ページのアクセス方法を、第１アクセス処理から第２アクセス処理に変更する。
【０１７２】
例えば、図２７のＢの時刻ｔ２のように、最大の書き換え回数の増加ペースが予め設定されたペースより遅い場合、管理部４０は、退避対象ページのアクセス方法を、第１アクセス処理から第２アクセス処理に変更する。これにより、不揮発記憶部１６に対する書き換え回数の増加ペースは、大きくなる。従って、管理部４０は、許容される範囲内で、不揮発記憶部１６に対する書き換え回数が最も多くなるように、不揮発記憶部１６に対する書き込みを管理することができる。この結果、管理部４０は、第１記憶部１４のメモリ使用量を減らすことができる。
【０１７３】
（第４実施形態）
つぎに、第４実施形態に係る情報処理装置１０について説明する。
【０１７４】
図２８は、第４実施形態に係る管理部４０による処理を示すフローチャートである。第４実施形態において、管理部４０は、図２８に示す処理を実行する。
【０１７５】
まず、Ｓ１２１において、管理部４０は、変数Ｔ、Ｎを０に初期化する。なお、Ｔは、所定期間内における、書き込み済みのキャッシュラインの累積個数を表す。また、Ｎは、所定期間内における、カウンタ値を更新したページの数を表す。
【０１７６】
続いて、Ｓ１２２において、管理部４０は、何れかのページにおけるカウンタ値が更新されるか、つまり、カウンタ値がインクリメントされるか否かを判断する。カウンタ値が更新されない場合（Ｓ１２２のＮｏ）、管理部４０は、Ｓ１２２で処理を待機する。カウンタ値が更新される場合（Ｓ１２２のＹｅｓ）、管理部４０は、処理をＳ１２３に進める。
【０１７７】
Ｓ１２３において、管理部４０は、管理テーブルを参照して、カウンタ値の更新直前における更新対象のページのエントリに含まれる書き込み済みのキャッシュラインの個数（Ｓ）を検出する。なお、書き込み済みのキャッシュラインの個数は、ページ内の書き込み済み領域の大きさを表す。従って、Ｓ１２３では、管理部４０は、カウンタ値の更新直前における更新対象のページに含まれる書き込み済み領域の大きさを検出する。
【０１７８】
続いて、Ｓ１２４において、管理部４０は、Ｔに、書き込み済みのキャッシュラインの個数（Ｓ）を加算する。これにより、管理部４０は、書き込み済みのキャッシュラインの累積個数を算出することができる。続いて、Ｓ１２５において、管理部４０は、Ｎに１を加算する。これにより、管理部４０は、カウンタ値を更新した累積ページ数を算出することができる。
【０１７９】
続いて、Ｓ１２６において、管理部４０は、所定期間が経過したか否かを判断する。所定期間が経過していない場合（Ｓ１２６のＮｏ）、管理部４０は、処理をＳ１２２に戻して、次にカウンタ値の更新がされるまで処理を待機する。所定期間が経過した場合（Ｓ１２６のＹｅｓ）、管理部４０は、処理をＳ１２７に進める。
【０１８０】
Ｓ１２７において、管理部４０は、所定期間における、書き込み済みのキャッシュラインの個数の平均値を算出する。すなわち、管理部４０は、所定期間における、更新対象のページに含まれる書き込み済み領域の大きさの平均値を算出する。本例では、管理部４０は、Ｔ／Ｎを演算して、平均値（Ａ）を算出する。
【０１８１】
続いて、Ｓ１２８において、管理部４０は、平均値が予め定められた第１閾値より大きいか否かを判断する。平均値が第１閾値より大きい場合（Ｓ１２８のＹｅｓ）、管理部４０は、処理をＳ１２９に進める。
【０１８２】
Ｓ１２９において、管理部４０は、不揮発記憶部１６に含まれる複数のページのうちの第２アクセス処理に設定されている何れかのページを、交換対象ページとして選択する。なお、交換対象ページの選択処理は、第１実施形態と同様である。
【０１８３】
続いて、Ｓ１３０において、管理部４０は、変換テーブルにアクセスして、選択した交換対象ページのアクセス方法を、第２アクセス処理から第１アクセス処理に変更する。続いて、Ｓ１３１において、管理部４０は、ウェアレベリング実行部３８によるウェアレベリング処理が停止している場合には、ウェアレベリングの実行を開始させる。Ｓ１３１を終えると、管理部４０は、処理をＳ１２１に戻す。
【０１８４】
また、平均値が第１閾値より大きくない場合（Ｓ１２８のＮｏ）、管理部４０は、処理をＳ１３２に進める。Ｓ１３２において、管理部４０は、平均値が予め定められた第２閾値より小さいか否かを判断する。
【０１８５】
平均値が第２閾値より小さい場合（Ｓ１３２のＹｅｓ）、管理部４０は、処理をＳ１３３に進める。Ｓ１３３において、管理部４０は、ウェアレベリング実行部３８によるウェアレベリング処理を停止させる。Ｓ１３３の処理を終えると、管理部４０は、処理をＳ１２１に戻す。
【０１８６】
平均値が第２閾値より小さくない場合（Ｓ１３１のＮｏ）、管理部４０は、処理をＳ１３４に進める。Ｓ１３４において、管理部４０は、ウェアレベリング実行部３８によるウェアレベリング処理が停止している場合には、ウェアレベリングの実行を開始させる。Ｓ１３４を終えると、管理部４０は、処理をＳ１２１に戻す。そして、管理部４０は、Ｓ１２１に処理が戻されると、次の所定期間においてＳ１２１からＳ１３４の処理を実行する。
【０１８７】
このように管理部４０は、カウンタ値の更新時における更新対象のページにおける書き込み済みのキャッシュラインの個数を検出することができる。つまり、管理部４０は、カウンタ値の更新時における更新対象のページにおける書き込み済みの領域の大きさを検出することができる。さらに、管理部４０は、所定期間毎に、更新対象のページにおける書き込み済みの領域の大きさの平均値を算出することができる。そして、管理部４０は、平均値が第１閾値より大きい場合、交換対象ページのアクセス方法を、第２アクセス処理から第１アクセス処理に変更することができる。さらに、管理部４０は、平均値が第２閾値より小さい場合、ウェアレベリングの実行を停止することができる。
【０１８８】
図２９は、第４実施形態で実行される処理を説明するための図である。カウンタ値の更新時における更新対象のページにおける書き込み済みのキャッシュラインの個数は、ページ内の書き込み済み領域の大きさを表す。ページ内の書き込み済み領域の大きさの平均値が、相対的に大きい場合、不揮発記憶部１６は、特定のページに対して局所的に書き込みがされている。
【０１８９】
そこで、管理部４０は、カウンタ値の更新直前における更新対象のページに含まれる書き込み済み領域の大きさの平均値が第１閾値より大きい場合、交換対象ページのアクセス方法を、第２アクセス処理から第１アクセス処理に変更する。これにより、管理部４０は、局所的にアクセスされているデータを第１記憶部１４に記憶させて、不揮発記憶部１６の寿命を延ばすことができる。
【０１９０】
反対に、ページ内の書き込み済み領域の大きさの平均値が、相対的に小さい場合、不揮発記憶部１６は、複数のページに対して分散して書き込みがされている。従って、ページ内の書き込み済み領域の大きさの平均値が相対的に小さい場合、不揮発記憶部１６は、ウェアレベリング処理を実行しなくても、ページ毎に平均的に書き換えがされていると推定される。
【０１９１】
そこで、管理部４０は、カウンタ値の更新直前における更新対象のページに含まれる書き込み済み領域の大きさの平均値が第２閾値より小さい場合、ウェアレベリング処理を停止させる。これにより、管理部４０は、ウェアレベリング処理による不要な書き換えを無くして、効率良く不揮発記憶部１６を使用することができる。
【０１９２】
（第５実施形態）
つぎに、第５実施形態に係る情報処理装置１０について説明する。
【０１９３】
図３０は、第５実施形態に係るアクセス処理部２８によるアクセス処理を示すフローチャートである。第５実施形態に係るアクセス処理部２８は、図３０に示すフローチャートに従って、第１記憶部１４および不揮発記憶部１６に対してアクセスをする。
【０１９４】
まず、Ｓ２０１において、アクセス処理部２８は、処理回路１２からアクセス要求があったか否かを判断する。アクセス処理部２８は、アクセス要求が無い場合（Ｓ２０１のＮｏ）、処理をＳ２０１で待機する。アクセス処理部２８は、アクセス要求が有った場合（Ｓ２０１のＹｅｓ）、処理をＳ２０２に進める。
【０１９５】
Ｓ２０２において、アクセス処理部２８は、変換テーブルを参照して、アクセス要求に含まれる要求アドレスから、第１記憶部１４または不揮発記憶部１６におけるアクセス先となる対象ページのページ番号を特定する。これにより、アクセス処理部２８は、要求アドレスから物理アドレスへのアドレス変換処理を実行することができる。
【０１９６】
続いて、Ｓ２０３において、アクセス処理部２８は、対象ページに対するアクセス方法が、第１アクセス処理か否かを判断する。対象ページに対するアクセス方法が第１アクセス処理ではない場合、すなわち、アクセス方法が第２アクセス処理である場合（Ｓ２０３のＮｏ）、アクセス処理部２８は、処理をＳ２０４に進める。Ｓ２０４において、アクセス処理部２８は、不揮発記憶部１６における対象ページに直接アクセスする。そして、アクセス処理部２８は、Ｓ２０４の処理を終えると本フローを終了する。
【０１９７】
また、対象ページに対するアクセス方法が第１アクセス処理である場合（Ｓ２０３のＹｅｓ）、アクセス処理部２８は、処理をＳ２０５に進める。Ｓ２０５において、アクセス処理部２８は、データが第１記憶部１４に転送済みか未転送かを判断する。アクセス処理部２８は、データが第１記憶部１４に転送済みか未転送かを、変換テーブルにおけるページ番号（物理アドレス）を参照することにより判断することができる。
【０１９８】
転送済みの場合（Ｓ２０５のＹｅｓ）、アクセス処理部２８は、処理をＳ２０６に進める。Ｓ２０６において、アクセス処理部２８は、第１記憶部１４における対象ページにアクセスする。そして、アクセス処理部２８は、Ｓ２０６の処理を終えると本フローを終了する。
【０１９９】
未転送の場合（Ｓ２０５のＮｏ）、アクセス処理部２８は、処理をＳ２０７に進める。Ｓ２０７において、アクセス処理部２８は、第１アクセス処理をするために不揮発記憶部１６から第１記憶部１４にデータを転送することにより、第１記憶部１４のメモリ使用量が設定容量を超えるか否かを判断する。
【０２００】
第１記憶部１４のメモリ使用量が設定容量を超える場合（Ｓ２０７のＹｅｓ）、アクセス処理部２８は、処理をＳ２０８に進める。第１記憶部１４のメモリ使用量が設定容量を超えない場合（Ｓ２０７のＮｏ）、アクセス処理部２８は、処理をＳ２０９に進める。
【０２０１】
Ｓ２０８において、アクセス処理部２８は、第１記憶部１４に転送済みのデータの一部を不揮発記憶部１６に戻す。例えば、アクセス処理部２８は、第１記憶部１４にデータがコピーされているページのうち、アクセス数が少ない方から所定数のページを、不揮発記憶部１６に戻す。また、例えば、アクセス処理部２８は、第１記憶部１４にデータがコピーされているページのうち、最も古い方から所定数のページ（アクセスしてから最も時間が経過した所定数のページ）を、不揮発記憶部１６に戻す。さらに、アクセス処理部２８は、変換テーブルにおける転送したデータのページ番号（物理アドレス）を、不揮発記憶部１６における転送先のページ番号に変更する。アクセス処理部２８は、Ｓ２０８の処理を終えると、処理をＳ２０９に進める。
【０２０２】
Ｓ２０９において、アクセス処理部２８は、対象ページのデータを不揮発記憶部１６から第１記憶部１４に転送する。さらに、アクセス処理部２８は、変換テーブルにおける転送したデータのページ番号（物理アドレス）を、第１記憶部１４における転送先のページ番号に変更する。アクセス処理部２８は、Ｓ２０９の処理を終えると、処理をＳ２１０に進める。
【０２０３】
Ｓ２１０において、アクセス処理部２８は、第１記憶部１４における対象ページにアクセスする。そして、アクセス処理部２８は、Ｓ２０４、Ｓ２０６またはＳ２１０の処理を終えると本フローを終了する。
【０２０４】
以上のように処理を実行することにより、アクセス処理部２８は、変換テーブルに示されたアクセス方法により第１記憶部１４および不揮発記憶部１６にアクセスすることができる。さらに、アクセス処理部２８は、第１記憶部１４のメモリ使用量を設定容量以下に抑制することができる。
【０２０５】
図３１は、第１アクセス処理に設定されたページ数と、第２アクセス処理に設定されたページ数との比率に対する、メモリアクセスにより電力消費の推測値を表す図である。
【０２０６】
第１アクセス処理に設定されたページが第１記憶部１４に記憶済みの場合（図３０のＳ２０５のＹｅｓの場合）、アクセス処理部２８は、不揮発記憶部１６から第１記憶部１４へのデータ転送を実行しない。従って、第１アクセス処理に設定されたページに繰り返しアクセスした場合、データ転送による電力消費が削減されるので、メモリアクセスによる電力消費が少なくなる。
【０２０７】
しかし、アクセス処理部２８は、第１記憶部１４のメモリ使用量が設定容量を超えないように、第１記憶部１４から不揮発記憶部１６へのデータの書き戻し処理を行う（図３０のＳ２０８の処理）。従って、第１アクセス処理に設定されたページが多すぎると、反対に、メモリアクセスによる電力消費が大きくなる。
【０２０８】
例えば、図３１に示すように、第１アクセス処理に設定されたページ数と第２アクセス処理に設定されたページ数の比率が所定の値（例えば、図３１の約２０パーセントの位置）である場合、メモリアクセスによる電力消費は最小となると推定される。
【０２０９】
メモリアクセスによる電力消費が最小となるのは、第１記憶部１４のメモリ使用量が、設定容量を超えず、且つ、第１記憶部１４のメモリ使用量がなるべく大きくなるような状態と推測される。
【０２１０】
そこで、第５実施形態に係る管理部４０は、第１記憶部１４のメモリ使用量を検出し、検出したメモリ使用量が予め設定された範囲の上限より大きい場合には、設定値（例えば第１閾値）を大きくし、メモリ使用量が予め設定された範囲より小さい場合には、設定値（例えば第１閾値）を小さくする。これにより、管理部４０は、第１記憶部１４のメモリ使用量を、設定容量を超えず、且つ、なるべく大きくなるような状態に制御して、メモリアクセスによる電力消費を小さくすることができる。
【０２１１】
図３２は、第５実施形態に係る管理部４０による第１閾値の変更処理を示すフローチャートである。第５実施形態において、管理部４０は、図３２に示すフローチャートに従って、図１４のＳ５３、図２４のＳ１０３、および、図２８のＳ１２８で用いる第１閾値を変更する。
【０２１２】
まず、Ｓ２２１において、管理部４０は、第１記憶部１４のメモリ使用量を取得する。続いて、Ｓ２２２において、管理部４０は、取得したメモリ使用量が設定範囲の上限より大きいか否かを判断する。メモリ使用量が設定範囲の上限より大きい場合（Ｓ２２２のＹｅｓ）、管理部４０は、処理をＳ２２３に進める。メモリ使用量が設定範囲の上限より大きくない場合（Ｓ２２２のＮｏ）、管理部４０は、処理をＳ２２４に進める。
【０２１３】
Ｓ２２３において、管理部４０は、第１閾値を所定量大きくする。これにより、管理部４０は、第２アクセス処理から第１アクセス処理への変更が発生するページ数を少なくすることができる。管理部４０は、Ｓ２２３の処理を終えると、本フローを終了する。
【０２１４】
Ｓ２２４において、管理部４０は、取得したメモリ使用量が設定範囲の下限より小さいか否かを判断する。メモリ使用量が設定範囲の下限より小さい場合（Ｓ２２４のＹｅｓ）、管理部４０は、処理をＳ２２５に進める。メモリ使用量が設定範囲の下限より小さくない場合（Ｓ２２４のＮｏ）、管理部４０は、本フローを終了する。
【０２１５】
Ｓ２２５において、管理部４０は、第１閾値を所定量小さくする。これにより、管理部４０は、第２アクセス処理から第１アクセス処理への変更が発生するページ数を多くすることができる。管理部４０は、Ｓ２２５の処理を終えると、本フローを終了する。
【０２１６】
以上の処理を実行することにより、管理部４０は、メモリ使用量が設定範囲の上限より大きい場合には、設定値（第１閾値）を大きくし、メモリ使用量が設定範囲より小さい場合には、設定値（第１閾値）を小さくすることができる。これにより、管理部４０は、第１記憶部１４のメモリ使用量を、設定容量を超えず、且つ、なるべく大きくなるような状態として、メモリアクセスによる電力消費を抑えることができる。
【０２１７】
（変形例）
以下、各実施形態の変形例について説明する。
【０２１８】
図３３は、識別情報の変形例を示す図である。管理装置１８は、ページ番号を用いて、管理テーブルに格納される管理情報を識別していた。これに代えて、管理装置１８は、ＴＬＢ（Ｔｒａｎｓｌａｔｉｏｎ  Ｌｏｏｋａｓｉｄｅ  Ｂｕｆｆｅｒ）により管理されるアドレスに対応させて、管理テーブルに格納される管理情報を識別してもよい。
【０２１９】
処理回路１２は、ＴＬＢと呼ばれる仮想記憶機構を有する。ＴＬＢは、仮想アドレスから物理アドレスへアドレス変換を行うために、ページにおける要求アドレス（論理アドレス）と物理アドレスとの対応を示す対応関係情報を記憶する。しかし、ＴＬＢは、保有しているエントリが限られているので、対応関係情報を必要に応じて入れ替える。ＴＬＢは、例えば、直近において高い頻度でアクセスされるページについての対応関係情報を優先して記憶する。
【０２２０】
そこで、管理装置１８は、ＴＬＢに対応関係情報が記憶されているページについて、管理テーブルに記憶させてもよい。例えば、管理装置１８は、ＴＬＢのエントリの数と同一の数のエントリを有する管理テーブルを記憶する。そして、更新部３６は、ＴＬＢのエントリから対応関係情報が追い出されたタイミングにおいて、対応する管理テーブルに記憶されている管理情報を消去する。この場合、更新部３６は、管理情報が他の管理情報に書き込みされた場合と同様の処理を実行する。なお、管理テーブルは、ＴＬＢのエントリと同一のエントリを有するので、識別情報を格納するエントリを含まなくてもよい。
【０２２１】
管理装置１８は、このように管理テーブルに管理情報を格納することにより、処理回路１２に同期して効率良くウェアレベリングに必要なページ毎の書き換え回数を管理することができる。
【０２２２】
図３４は、情報処理装置１０の構成の第１変形例を示す図である。例えば、第１変形例に係る処理回路１２は、管理装置１８を内部に備える。第１変形例に係る第１記憶部１４および不揮発記憶部１６は、この処理回路１２の外部に設けられる。
【０２２３】
図３５は、情報処理装置１０の構成の第２変形例を示す図である。例えば、第２変形例に係る処理回路１２は、管理装置１８を内部に備える。第２変形例に係る処理回路１２は、第１記憶部１４も内部に備える。
【０２２４】
図３６は、情報処理装置１０の構成の第３変形例を示す図である。例えば、情報処理装置１０は、処理回路１２と、不揮発記憶モジュール８０とを備えてもよい。この場合、不揮発記憶モジュール８０は、不揮発記憶部１６と、管理装置１８とを有する。
【０２２５】
また、第１記憶部１４は、例えば、プロセッサ内のＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）であってもよい。また、第１記憶部１４は、不揮発記憶部１６よりも書き換え可能回数が多いＭＲＡＭ等の不揮発メモリであってもよい。
【０２２６】
以上、本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０２２７】
１０  情報処理装置
１２  処理回路
１４  第１記憶部
１６  不揮発記憶部
１８  管理装置
２６  設定記憶部
２８  アクセス処理部
３２  カウンタ記憶部
３４  管理情報記憶部
３６  更新部
３８  ウェアレベリング実行部
４０  管理部
５２  判定部
５４  選択部
５６  変更部
【図１】
2019164508.tif 000003
【図２】
2019164508.tif 000004
【図３】
2019164508.tif 000005
【図４】
2019164508.tif 000006
【図５】
2019164508.tif 000007
【図６】
2019164508.tif 000008
【図７】
2019164508.tif 000009
【図８】
2019164508.tif 000010
【図９】
2019164508.tif 000011
【図１０】
2019164508.tif 000012
【図１１】
2019164508.tif 000013
【図１２】
2019164508.tif 000014
【図１３】
2019164508.tif 000015
【図１４】
2019164508.tif 000016
【図１５】
2019164508.tif 000017
【図１６】
2019164508.tif 000018
【図１７】
2019164508.tif 000019
【図１８】
2019164508.tif 000020
【図１９】
2019164508.tif 000021
【図２０】
2019164508.tif 000022
【図２１】
2019164508.tif 000023
【図２２】
2019164508.tif 000024
【図２３】
2019164508.tif 000025
【図２４】
2019164508.tif 000026
【図２５】
2019164508.tif 000027
【図２６】
2019164508.tif 000028
【図２７】
2019164508.tif 000029
【図２８】
2019164508.tif 000030
【図２９】
2019164508.tif 000031
【図３０】
2019164508.tif 000032
【図３１】
2019164508.tif 000033
【図３２】
2019164508.tif 000034
【図３３】
2019164508.tif 000035
【図３４】
2019164508.tif 000036
【図３５】
2019164508.tif 000037
【図３６】
2019164508.tif 000038