(57)【要約】  本情報処理装置は、複数の区画を有し且つ複数の区画の各々について実際の書き込み回数を記憶する記憶部と、複数の区画の各々について、記憶部に記憶されている実際の書き込み回数から、データの入れ替えを実行しない場合における書き込み回数の予測値である第１の予測値と、所定条件を満たす区画のペアに対してデータの入れ替えを実行した場合における書き込み回数の予測値である第２の予測値とを算出する算出部と、第１の予測値のうち最大の値が、第２の予測値のうち最大の値より大きい場合、所定の条件を満たす区画のペアに対してデータの入れ替えを実行する入替部とを有する。
2015181923.tif 000002
【特許請求の範囲】
【請求項１】
複数の区画を有し且つ前記複数の区画の各々について実際の書き込み回数を記憶する記憶部と、
前記複数の区画の各々について、前記記憶部に記憶されている前記実際の書き込み回数から、データの入れ替えを実行しない場合における書き込み回数の予測値である第１の予測値と、所定条件を満たす区画のペアに対して前記データの入れ替えを実行した場合における書き込み回数の予測値である第２の予測値とを算出する算出部と、
前記第１の予測値のうち最大の値が、前記第２の予測値のうち最大の値より大きい場合、前記所定の条件を満たす区画のペアに対して前記データの入れ替えを実行する入替部と、
を有する情報処理装置。
【請求項２】
前記算出部は、
前記区画のペアのうち第１の区画の前記実際の書き込み回数と、前記第１の区画の前記実際の書き込み回数から算出された第１の書き込み頻度とを用いて、前記第１の区画の前記第１の予測値を算出し、
前記第１の区画の前記実際の書き込み回数と、前記区画のペアのうち第２の区画の前記実際の書き込み回数から算出された第２の書き込み頻度とを用いて、前記第１の区画の前記第２の予測値を算出する
請求項１記載の情報処理装置。
【請求項３】
前記所定条件は、前記区画のペアのうち第１の区画の前記第１の予測値と、当該区画のペアのうち第２の区画の前記第１の予測値との差が所定値以上であるという条件を含む
請求項１又は２記載の情報処理装置。
【請求項４】
前記第１の区画の前記第１の予測値と前記第２の区画の前記第１の予測値との差が最大になるように、前記第１の区画と前記第２の区画とが選択される
請求項３記載の情報処理装置。
【請求項５】
予め取得した第２の設定値に基づき、前記入れ替えの対象ではない区画を決定する決定部
をさらに有し、
前記所定条件は、前記第１の区画及び前記第２の区画が、前記入れ替えの対象ではない区画以外の区画であるという条件をさらに含む
請求項３記載の情報処理装置。
【請求項６】
所定の時刻を経過した場合又は所定のイベントが発生した場合、前記算出部及び前記入替部に処理を開始させる制御部
をさらに有する請求項１乃至５のいずれか１つ記載の情報処理装置。
【請求項７】
予め取得した第１の設定値に基づき、前記入れ替えを実行する間隔、前記入れ替えの回数、及び１回の前記入れ替えにより移動するデータ量を算出し、算出結果に基づき前記入替部に前記入れ替えを実行させる入替管理部
をさらに有する請求項１乃至６のいずれか１つ記載の情報処理装置。
【請求項８】
前記記憶部は、書き込み回数に上限がある記憶媒体である
請求項１乃至７のいずれか１つ記載の情報処理装置。
【請求項９】
複数の区画を有し且つ前記複数の区画の各々について実際の書き込み回数を記憶する記憶部における前記複数の区画の各々について、前記記憶部に記憶されている前記実際の書き込み回数から、データの入れ替えを実行しない場合における書き込み回数の予測値である第１の予測値と、所定条件を満たす区画のペアに対して前記データの入れ替えを実行した場合における書き込み回数の予測値である第２の予測値とを算出し、
前記第１の予測値のうち最大の値が、前記第２の予測値のうち最大の値より大きい場合、前記所定の条件を満たす区画のペアに対して前記データの入れ替えを実行する
処理をコンピュータに実行させるための制御プログラム。
【請求項１０】
複数の区画を有し且つ前記複数の区画の各々について実際の書き込み回数を記憶する記憶部における前記複数の区画の各々について、前記記憶部に記憶されている前記実際の書き込み回数から、データの入れ替えを実行しない場合における書き込み回数の予測値である第１の予測値と、所定条件を満たす区画のペアに対して前記データの入れ替えを実行した場合における書き込み回数の予測値である第２の予測値とを算出し、
前記第１の予測値のうち最大の値が、前記第２の予測値のうち最大の値より大きい場合、前記所定の条件を満たす区画のペアに対して前記データの入れ替えを実行する
処理をコンピュータが実行する制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
記憶媒体に対する書き込みの制御技術に関する。
【背景技術】
【０００２】
記憶媒体には種々のデータが格納される。そして、記憶媒体に対して書き込みが行われる回数はデータの種類によって大きく異なる。【０００３】
例えば、記憶媒体がＣＰＵ（Central Processing Unit）を備えた組み込み情報機器のメインストレージとして利用される場合を考える。ＣＰＵがマイクロプログラムを実行中に出力するログが格納される領域には、マイクロプログラムの実行中に頻繁にログが書き込まれる。この場合、１日のうちに複数回の書き込みが行われ、年間では数百回から数千回の書き込みが行われると推定される。一方、マイクロプログラム自体が格納される領域には、マイクロプログラムのアップデートが行われない限り書き込みが発生しない。従って、例えば１ヶ月に数回又は年に数回というような頻度で書き込みが行われると推定される。このような書き込み回数の偏りは、書き込み回数に制限がある記憶媒体（例えばフラッシュメモリ）の寿命を縮める原因になる。【０００４】
また、コスト削減のため記憶媒体の容量を少なくする場合には、書き込みが頻繁に行われない領域（例えばマイクロプログラム等が格納される領域）が占める割合が相対的に大きくなる。さらに、組み込み情報機器がネットワークに接続される機会が限られている場合、マイクロプログラムのアップデートがほとんど行われない。このような要因により、書き込み回数の偏りはさらに顕著になる。【０００５】
書き込み回数の偏りに関して、或る文献は以下のような技術を開示する。具体的には、ブロックの消去回数のうち最大の消去回数と最小の消去回数との差分が基準回数以上である場合に、中央制御装置が、消去回数が最小であるブロックのデータと、データが格納されていない予備状態のブロックのデータとを入れ替える。しかし、このように入替を実行すると、入替後に消去回数が却って増加する場合がある。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平１０−３２０９８４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
従って、１つの側面では、本発明の目的は、書き込み回数に制限がある記憶媒体において書き込み回数を平準化することである。
【課題を解決するための手段】
【０００８】
本発明に係る情報処理装置は、複数の区画を有し且つ複数の区画の各々について実際の書き込み回数を記憶する記憶部と、複数の区画の各々について、記憶部に記憶されている実際の書き込み回数から、データの入れ替えを実行しない場合における書き込み回数の予測値である第１の予測値と、所定条件を満たす区画のペアに対してデータの入れ替えを実行した場合における書き込み回数の予測値である第２の予測値とを算出する算出部と、第１の予測値のうち最大の値が、第２の予測値のうち最大の値より大きい場合、所定の条件を満たす区画のペアに対してデータの入れ替えを実行する入替部とを有する。
【発明の効果】
【０００９】
１つの側面では、書き込み回数に制限がある記憶媒体において書き込み回数を平準化できるようになる。
【図面の簡単な説明】
【００１０】
【図１】図１は、情報処理装置のハードウェア構成を示す図である。
【図２】図２は、情報処理装置の機能ブロック図である。
【図３】図３は、情報処理装置が実行する処理の概要を説明するための処理フローである。
【図４】図４は、情報処理装置のトリガ設定部が実行する処理の処理フローを示す図である。
【図５】図５は、情報処理装置のペース設定部が実行する処理の処理フローを示す図である。
【図６】図６は、情報処理装置のデータ設定部が実行する処理の処理フローを示す図である。
【図７】図７は、情報処理装置の区画設定部が実行する処理の処理フローを示す図である。
【図８】図８は、設定値格納部に格納されるデータの一例を示す図である。
【図９】図９は、メインの処理フローを示す図である。
【図１０】図１０は、判定処理の処理フローを示す図である。
【図１１】図１１は、予測処理の処理フローを示す図である。
【図１２】図１２は、区画データ格納部に格納されるデータの一例を示す図である。
【図１３】図１３は、本実施の形態におけるリストの構造を示す図である。
【図１４】図１４は、リストＬ６の生成について説明するための図である。
【図１５】図１５は、ペース管理処理の処理フローを示す図である。
【図１６】図１６は、頻度更新処理の処理フローを示す図である。
【図１７】図１７は、頻度更新処理においてメインメモリに格納されるデータの一例を示す図である。
【図１８】図１８は、リスト更新処理の処理フローを示す図である。
【図１９】図１９は、フラッシュメモリの状態の比較例を示す図である。
【図２０】図２０は、フラッシュメモリの状態の具体例を示す図である。
【発明を実施するための形態】
【００１１】
図１に、本実施の形態における情報処理装置１のハードウェア構成を示す。情報処理装置１は、複数の区画を有するフラッシュメモリ１１と、例えばＣＰＵであるプロセッサ１３と、例えばＤＲＡＭ（Dynamic Random Access Memory）であるメインメモリ１５とを有する。プロセッサ１３は、フラッシュメモリ１１と、メインメモリ１５とにバス等を介して接続される。本実施の形態の処理を実行するためのプログラムはフラッシュメモリ１１に格納され、プロセッサ１３により実行される際にはフラッシュメモリ１１からメインメモリ１５に読み出される。本実施の形態の処理を実行するためのプログラムは、例えば、ＯＳ（Operating System）のプログラム又はファームウェアに含まれる。
【００１２】
図２に、本実施の形態における情報処理装置１の機能ブロック図を示す。情報処理装置１は、トリガ設定部１０１と、ペース設定部１０２と、データ設定部１０３と、区画設定部１０４と、設定値格納部１０５と、トリガ検出部１０６と、判定部１０７と、予測部１０８と、区画データ格納部１０９と、加算部１１０と、第１リスト更新部１１１と、頻度更新部１１２と、第２リスト更新部１１３と、ペース管理部１１４と、入替部１１５とを含む。設定値格納部１０５及び区画データ格納部１０９は、例えばフラッシュメモリ１１に設けられる。
【００１３】
トリガ設定部１０１は、トリガの設定値の入力を受け付け、設定値格納部１０５に格納する。ペース設定部１０２は、ペースの設定値の入力を受け付け、設定値格納部１０５に格納する。データ設定部１０３は、データの設定値の入力を受け付け、設定値格納部１０５に格納する。区画設定部１０４は、区画の設定値の入力を受け付け、設定値格納部１０５に格納する。トリガ検出部１０６は、設定値格納部１０５に格納されているトリガの設定値を用いてトリガを検出し、判定部１０７を呼び出す。判定部１０７は、予測部１０８を呼び出す。これに応じ、予測部１０８は、区画データ格納部１０９に格納されているデータを用いて、入替を実行しない場合における書き込み回数の予測値（以下、書き込み回数の第１の予測値と呼ぶ）と、入替を実行した場合における書き込み回数の予測値（以下、書き込み回数の第２の予測値と呼ぶ）とを算出し、判定部１０７に通知する。判定部１０７は、予測部１０８から受け取ったデータ及び設定値格納部１０５に格納されているデータを用いて、入替を実行するか否か判定する。入替を実施する場合に、判定部１０７は、ペース管理部１１４を呼び出す。これに応じ、ペース管理部１１４は、設定値格納部１０５に格納されているデータを用いて、入替部１１５が入替を実行するペースを制御する。入替部１１５は、ペース管理部１１４の制御に従い入替を実行する。入替が終了した場合に、ペース管理部１１４は、頻度更新部１１２を呼び出す。これに応じ、頻度更新部１１２は、入替が行われた区画について書き込み頻度を入れ替える。また、頻度更新部１１２は、第２リスト更新部１１３を呼び出す。これに応じ、第２リスト更新部１１３は、区画データ格納部１０９に格納されている、書き込み頻度の昇順リストにおけるポインタを設定する。
【００１４】
加算部１１０は、フラッシュメモリ１１への書き込みが行われた場合、区画データ格納部１０９に格納されている書き込み回数を更新する。また、加算部１１０は、第１リスト更新部１１１を呼び出す。これに応じ、第１リスト更新部１１１は、区画データ格納部１０９に格納されている、書き込み回数の昇順リストにおけるポインタを設定する。また、加算部１１０は、頻度更新部１１２を呼び出す。これに応じ、頻度更新部１１２は、書き込みが行われた区画について書き込み頻度を更新する。また、頻度更新部１１２は、第２リスト更新部１１３を呼び出す。これに応じ、第２リスト更新部１１３は、区画データ格納部１０９に格納されている、書き込み頻度の昇順リストにおけるポインタを設定する。
【００１５】
次に、図３乃至図２０を用いて、情報処理装置１が実行する処理について説明する。まず、図３を用いて、情報処理装置１が実行する処理の概要を説明する。
【００１６】
まず、加算部１１０は、フラッシュメモリ１１への書き込みが行われたことを検出する（図３：ステップＳ１００１）。そして、加算部１１０は、書き込みが行われた区画について、区画データ格納部１０９に格納されている書き込み回数を更新する。また、頻度更新部１１２は、書き込みが行われた区画について、区画データ格納部１０９に格納されている書き込み頻度を更新する（ステップＳ１００３）。
【００１７】
トリガ検出部１０６は、設定値格納部１０５に格納されているトリガの設定値を用いて、トリガを検出したか判断する（ステップＳ１００５）。トリガを検出していない場合（ステップＳ１００５：Ｎｏルート）、予測値を算出するタイミングではないので、ステップＳ１００１の処理に戻る。
【００１８】
トリガを検出した場合（ステップＳ１００５：Ｙｅｓルート）、予測部１０８は、区画データ格納部１０９に格納されているデータを用いて、書き込み回数の第１の予測値（すなわち、入替を実行しない場合における書き込み回数の予測値）を区画毎に算出する（ステップＳ１００７）。
【００１９】
予測部１０８は、区画データ格納部１０９に格納されているデータを用いて、入替が実行される区画を特定する（ステップＳ１００９）。そして、予測部１０８は、書き込み回数の第２の予測値（すなわち、入替を実行した場合における書き込み回数の予測値）を区画毎に算出する（ステップＳ１０１１）。
【００２０】
判定部１０７は、予測部１０８により算出された第１の予測値と第２の予測値とを用いて、入替を実行するか判定する（ステップＳ１０１３）。入替を実行しない場合（ステップＳ１０１３：Ｎｏルート）、ステップＳ１００１の処理に戻る。
【００２１】
入替を実行する場合（ステップＳ１０１３：Ｙｅｓルート）、入替部１１５は、ペース管理部１１４により設定されたペースで入替を実行する（ステップＳ１０１５）。そして、頻度更新部１１２は、入替が行われた区画について、区画データ格納部１０９に格納されている書き込み頻度を入れ替える（ステップＳ１０１７）。そして処理を終了する。
【００２２】
以上のような処理を実行すれば、入替が有効であることを確認したうえで入替を行えるので、書き込み回数を効果的に平準化できるようになる。
【００２３】
次に、図４乃至図２０を用いて、情報処理装置１が実行する処理についてより詳細に説明する。まず、図４を用いて、情報処理装置１のトリガ設定部１０１が実行するトリガ設定処理について説明する。
【００２４】
トリガ設定部１０１は、トリガ（本実施の形態においては、判定部１０７が処理を開始するためのトリガ）の設定値の入力を検出したか判断する（図４：ステップＳ１）。トリガの設定値は、例えば管理者等により入力される。トリガの設定値の入力を検出していない場合（ステップＳ１：Ｎｏルート）、ステップＳ１の処理に戻る。
【００２５】
トリガの設定値の入力を検出した場合（ステップＳ１：Ｙｅｓルート）、トリガ設定部１０１は、トリガの設定値が時刻の設定値を含むか判断する（ステップＳ３）。トリガの設定値が時刻の設定値を含まない場合（ステップＳ３：Ｎｏルート）、ステップＳ７の処理に移行する。
【００２６】
トリガの設定値が時刻の設定値を含む場合（ステップＳ３：Ｙｅｓルート）、トリガ設定部１０１は、時刻の設定値を設定値格納部１０５に格納する（ステップＳ５）。
【００２７】
トリガ設定部１０１は、トリガの設定値がイベント（例えば、ＣＰＵ負荷の低下など）の設定値を含むか判断する（ステップＳ７）。トリガの設定値がイベントの設定値を含まない場合（ステップＳ７：Ｎｏルート）、ステップＳ１の処理に戻る。一方、トリガの設定値がイベントの設定値を含む場合（ステップＳ７：Ｙｅｓルート）、トリガ設定部１０１は、イベントの設定値を設定値格納部１０５に格納する（ステップＳ９）。そしてステップＳ１の処理に戻る。
【００２８】
以上のようにすれば、後で説明する処理においてトリガの設定値を使用できるようになる。
【００２９】
次に、図５を用いて、情報処理装置１のペース設定部１０２が実行するペース設定処理について説明する。まず、ペース設定部１０２は、ペース（本実施の形態においては、１回の入替で移動するデータの量）の設定値の入力を検出したか判断する（図５：ステップＳ１１）。ペースの設定値は、例えば管理者等により入力される。ペースの設定値の入力を検出していない場合（ステップＳ１１：Ｎｏルート）、ステップＳ１１の処理に戻る。一方、ペースの設定値の入力を検出した場合（ステップＳ１１：Ｙｅｓルート）、ペース設定部１０２は、ペースの設定値を設定値格納部１０５に格納する（ステップＳ１３）。そしてステップＳ１１の処理に戻る。
【００３０】
以上のようにすれば、後で説明する処理においてペースの設定値を使用できるようになる。
【００３１】
次に、図６を用いて、情報処理装置のデータ設定部１０３が実行するデータ設定処理について説明する。まず、データ設定部１０３は、データの設定値（本実施の形態においては、データに対して入替を行うことができるか否かを表す設定値）の入力を検出したか判断する（図６：ステップＳ２１）。データの設定値は、例えば管理者等により入力される。データの設定値の入力を検出していない場合（ステップＳ２１：Ｎｏルート）、ステップＳ２１の処理に戻る。一方、データの設定値の入力を検出した場合（ステップＳ２１：Ｙｅｓルート）、データ設定部１０３は、データの設定値を設定値格納部１０５に格納する（ステップＳ２３）。そしてステップＳ２１の処理に戻る。
【００３２】
以上のようにすれば、後で説明する処理においてデータの設定値を使用できるようになる。
【００３３】
次に、図７を用いて、情報処理装置の区画設定部１０４が実行する区画設定処理について説明する。まず、区画設定部１０４は、区画の設定値（本実施の形態においては、区画に格納されているデータに対して入替を行うことができるか否かを表す設定値）の入力を検出したか判断する（図７：ステップＳ３１）。区画の設定値は、例えば管理者等により入力される。区画の設定値の入力を検出していない場合（ステップＳ３１：Ｎｏルート）、ステップＳ３１の処理に戻る。一方、区画の設定値の入力を検出した場合（ステップＳ３１：Ｙｅｓルート）、区画設定部１０４は、区画の設定値を設定値格納部１０５に格納する（ステップＳ３３）。そしてステップＳ３１の処理に戻る。
【００３４】
以上のようにすれば、後で説明する処理において区画の設定値を使用できるようになる。
【００３５】
図８に、設定値格納部１０５に格納されるデータの一例を示す。図８の例では、時刻の設定値と、イベントの設定値と、ペースの設定値と、データの設定値と、区画の設定値とが格納される。時刻の設定値における時刻フラグの値が１である場合、時刻の設定値は有効である。イベントの設定値におけるＣＰＵ負荷フラグの値が１である場合、ＣＰＵ負荷の値が所定の基準値以下になった場合に判定部１０７が処理を開始する。イベントの設定値におけるＩＯ（Input Output）負荷フラグの値が１である場合、ＩＯ負荷の値が所定の基準値以下になった場合に判定部１０７が処理を開始する。データの設定値における入替フラグの値が１である場合、そのデータに対して入替を行うことができる。区画の設定値における入替フラグの値が１である場合、その区画に格納されているデータに対して入替を行うことができる。
【００３６】
次に、図９乃至図２０を用いて、データの入替を実行する処理について説明する。まず、トリガ検出部１０６は、ＯＳから現在時刻を取得する（図９：ステップＳ４１）。
【００３７】
トリガ検出部１０６は、ステップＳ４１において取得した現在時刻が、設定値格納部１０５に格納されている時刻の設定値が表す設定時刻より後であるか判断する（ステップＳ４３）。現在時刻が設定時刻より後である場合（ステップＳ４３：Ｙｅｓルート）、ステップＳ５５の処理に移行する。
【００３８】
現在時刻が設定時刻より後ではない場合（ステップＳ４３：Ｙｅｓルート）、トリガ検出部１０６は、設定値格納部１０５に格納されているＣＰＵ負荷フラグの値が１であるか判断する（ステップＳ４５）。ＣＰＵ負荷フラグの値が１ではない場合（ステップＳ４５：Ｎｏルート）、ステップＳ５１の処理に移行する。
【００３９】
ＣＰＵ負荷フラグの値が１である場合（ステップＳ４５：Ｙｅｓルート）、トリガ検出部１０６は、ＣＰＵ負荷の値をＯＳから取得する（ステップＳ４７）。トリガ検出部１０６は、ステップＳ４７において取得したＣＰＵ負荷の値が所定の基準値以下であるか判断する（ステップＳ４９）。ＣＰＵ負荷の値が所定の基準値以下である場合（ステップＳ４９：Ｙｅｓルート）、ステップＳ５５の処理に移行する。
【００４０】
ＣＰＵ負荷の値が所定の基準値より大きい場合（ステップＳ４９：Ｎｏルート）、トリガ検出部１０６は、トリガ検出部１０６は、設定値格納部１０５に格納されているＩＯ負荷フラグの値が１であるか判断する（ステップＳ５０）。ＩＯ負荷フラグの値が１ではない場合（ステップＳ５０：Ｎｏルート）、ステップＳ４１の処理に戻る。
【００４１】
ＩＯ負荷フラグの値が１である場合（ステップＳ５０：Ｙｅｓルート）、トリガ検出部１０６は、ＩＯ負荷の値をＯＳから取得する（ステップＳ５１）。
【００４２】
トリガ検出部１０６は、ステップＳ５１において取得したＩＯ負荷の値が所定の基準値以下であるか判断する（ステップＳ５３）。ＩＯ負荷の値が所定の基準値以下ではない場合（ステップＳ５３：Ｎｏルート）、ステップＳ４１の処理に戻る。
【００４３】
ＩＯ負荷の値が所定の基準値以下である場合（ステップＳ５３：Ｙｅｓルート）、トリガ検出部１０６は、判定部１０７を呼び出す。そして、判定部１０７は、判定処理を実行する（ステップＳ５５）。判定処理については、図１０を用いて説明する。
【００４４】
まず、判定部１０７は、引数に「入替無し」を指定して予測部１０８を呼び出す。これに応じ、予測部１０８は、予測処理を実行する（図１０：ステップＳ６１）。予測処理については、図１１乃至図１３を用いて説明する。
【００４５】
まず、予測部１０８は、引数に「入替有り」が指定されているか判断する（図１１：ステップＳ８１）。引数に「入替有り」が指定されていない場合（ステップＳ８１：Ｎｏルート）、予測部１０８は、フラッシュメモリ１１における区画毎に、所定時間経過後における書き込み回数の第１の予測値を算出し（ステップＳ８３）、区画データ格納部１０９に格納する。ステップＳ８３においては、例えば、書き込み回数の第１の予測値＝書き込み回数＋（書き込み頻度＊所定時間）により算出する。
【００４６】
図１２に、区画データ格納部１０９に格納されるデータの一例を示す。図１２の例では区画の数がｎ（ｎは２以上の自然数）であり、ｎ区画の各々について区画データが格納される。区画データには、区画識別子と、書き込み回数と、書き込み回数のリストであるリストＬ１におけるポインタと、書き込み回数の第１の予測値と、書き込み回数の第１の予測値のリストであるリストＬ２と、書き込み回数の第２の予測値と、書き込み回数の第２の予測値のリストであるリストＬ３と、書き込み頻度と、書き込み頻度のリストであるリストＬ４におけるポインタと、入替を実行した場合における書き込み頻度（以下、入替後書き込み頻度と呼ぶ）のリストであるリストＬ５におけるポインタと、入替が実行される区画のリストであるリストＬ６におけるポインタとを含む。また、区画データ格納部１０９には、リストＬ１乃至Ｌ６におけるアンカーのポインタが格納される。
【００４７】
図１３に、本実施の形態におけるリストの構造を示す。各要素には、前の要素を指し示すポインタ（以下、前要素ポインタと呼ぶ）と、次の要素を指し示すポインタ（以下、次要素ポインタと呼ぶ）とが付加される。アンカーに付加される前要素ポインタは「ＮＵＬＬ」であり、次要素ポインタは最初の要素（図１３の例では、要素［ｘ］）を指し示す。本実施の形態におけるリストＬ１乃至Ｌ５は、要素の値が昇順になるように並べられたリストである。従って、アンカーの前要素ポインタが指し示す要素の値が最も小さく、最後の要素の値が最も大きい。
【００４８】
図１１の説明に戻り、予測部１０８は、ステップＳ８３の処理結果に従い、リストＬ２（すなわち、書き込み回数の第１の予測値のリスト）におけるポインタを、書き込み回数の第１の予測値が昇順になるように設定する（ステップＳ８５）。そして呼び出し元の処理に戻る。なお、判定処理（図１１）のステップＳ８７以降については、後で説明する。
【００４９】
図１０の説明に戻り、判定部１０７は、リストＬ２（すなわち、書き込み回数の第１の予測値のリスト）から、書き込み回数の第１の予測値のうち最大の値Ｍ１を特定する（ステップＳ６３）。
【００５０】
判定部１０７は、設定値格納部１０５に格納されているデータの設定値及び区画の設定値を用いて、入替の対象ではない区画のリストＬ７を生成する（ステップＳ６５）。リストＬ７は、入替の対象ではない区画の識別子を含む。例えばデータＡについての入替フラグが１ではない場合、データＡが格納されている区画の識別子はリストＬ７に含まれる。また、例えば区画Ｓａについての入替フラグが１ではない場合には、区画Ｓａの識別子はリストＬ７に含まれる。
【００５１】
判定部１０７は、引数に「入替有り」及び「リストＬ７」を指定して予測部１０８を呼び出す。これに応じ、予測部１０８は予測処理を実行する（ステップＳ６７）。予測処理については、図１１及び図１４を用いて説明する。
【００５２】
まず、予測部１０８は、引数に「入替有り」が指定されているか判断する（図１１：ステップＳ８１）。引数に「入替有り」が指定されている場合（ステップＳ８１：Ｙｅｓルート）、予測部１０８は、区画データ格納部１０９に格納されている書き込み回数を用いて、リストＬ６（すなわち、入替が実行される区画のリスト）を生成する（ステップＳ８７）。
【００５３】
図１４を用いて、リストＬ６の生成について説明する。ステップＳ８７においては、まずリストＬ１（すなわち、書き込み回数のリスト）から選択された区画のペアについて書き込み回数の差を算出し、算出された差が所定値以上であるか判断する。ここで、区画のペアは図１４に示すように選択される。すなわち、まず書き込み回数が最も大きい区画と書き込み回数が最も小さい区画とを含むペアが選択され、次に、書き込み回数が２番目に大きい区画と書き込み回数が２番目に小さい区画とが選択され、次に、書き込み回数が３番目に大きい区画と書き込み回数が３番目に小さい区画とが選択され・・・、というように選択される。そして、選択されたペアについて算出された差が所定値以上であり、且つ、ペアに含まれる区画のいずれもリストＬ７（すなわち、入替の対象ではない区画のリスト）に含まれていない場合には、ペアに含まれる区画がリストＬ６に追加される。
【００５４】
図１１の説明に戻り、予測部１０８は、区画毎に、区画データ格納部１０９に格納されている、リストＬ４におけるポインタを、リストＬ５におけるポインタにコピーする（ステップＳ８９）。また、予測部１０８は、区画毎に、区画データ格納部１０９に格納されている書き込み頻度を入替後書き込み頻度にコピーする（ステップＳ９１）。
【００５５】
予測部１０８は、リストＬ６（すなわち、入替が実行される区画のリスト）及びリストＬ５（すなわち、入替後書き込み頻度のリスト）を用いて区画のペアを特定し、特定されたペアについて入替後書き込み頻度の入替を実行する（ステップＳ９３）。
【００５６】
予測部１０８は、区画毎に、所定時間経過後における書き込み回数の第２の予測値を算出し（ステップＳ９５）、区画データ格納部１０９に格納する。ステップＳ９５においては、例えば、書き込み回数の第２の予測値＝書き込み回数＋（入替後書き込み頻度＊所定時間）により算出する。
【００５７】
予測部１０８は、ステップＳ９５の処理結果に従い、リストＬ３（すなわち、書き込み回数の第２の予測値のリスト）におけるポインタを、書き込み回数の第２の予測値が昇順になるように設定する（ステップＳ９７）。そして呼び出し元の処理に戻る。
【００５８】
以上のように、書き込み頻度を利用することで、書き込み回数の第１の予測値及び第２の予測値を簡便に算出できるようになる。
【００５９】
図１０の説明に戻り、判定部１０７は、リストＬ３（すなわち、書き込み頻度の第２の予測値のリスト）から、書き込み回数の第２の予測値のうち最大の値Ｍ２を特定する（ステップＳ６９）。
【００６０】
判定部１０７は、Ｍ１＞Ｍ２が成立するか判断する（ステップＳ７１）。Ｍ１＞Ｍ２が成立しない場合（ステップＳ７１：Ｎｏルート）、呼び出し元の処理に戻る。
【００６１】
Ｍ１＞Ｍ２が成立する場合（ステップＳ７３：Ｙｅｓルート）、判定部１０７は、引数に「リストＬ６」を指定してペース管理部１１４を呼び出す。これに応じ、ペース管理部１１４は、ペース管理処理を実行する（ステップＳ７３）。ペース管理処理については、図１５を用いて説明する。
【００６２】
まず、ペース管理部１１４は、初回の実行であるか判断する（図１５：ステップＳ１０１）。初回の実行である場合（ステップＳ１０１：Ｙｅｓルート）、ペース管理部１１４は、設定値格納部１０５に格納されているペースの設定値及びリストＬ６（すなわち、入替が実行される区画のリスト）を用いて、実行回数、１回分のデータ量、及び実行間隔を決定し（ステップＳ１０３）、メインメモリ１５に格納する。例えばリストＬ６に含まれる区画の数が１００であり、１区画の容量が１メガバイトであり、ペースの設定値が１０メガバイト／秒であるとする。この場合、例えば実行回数を１０回とすると、１回分のデータ量は１０メガバイトであり、実行間隔は１秒である。また、例えば実行回数を２０回とすると、１回分のデータ量は５メガバイトであり、実行間隔は０．５秒である。
【００６３】
ペース管理部１１４は、入替の実行中であることを示すデータをメインメモリ１５に格納する（ステップＳ１０５）。
【００６４】
一方、初回の実行ではない場合（ステップＳ１０１：Ｎｏルート）、ペース管理部１１４は、ＯＳから現在時刻を取得する（ステップＳ１０７）。
【００６５】
ペース管理部１１４は、前回の実行時刻から実行間隔分の時間が経過したか判断する（ステップＳ１０９）。ステップＳ１０９においては、前回の実行時刻から実行間隔分の時間が経過した時点が現在時刻よりも後であるか判断する。前回の実行時刻は、後で説明するステップＳ１１５においてメインメモリ１５に格納される。実行間隔は、ステップＳ１０３において決定される。
【００６６】
前回の実行時刻から実行間隔分の時間が経過していない場合（ステップＳ１０９：Ｎｏルート）、ステップＳ１０１の処理に戻る。前回の実行時刻から実行間隔分の時間が経過した場合（ステップＳ１０９：Ｙｅｓルート）、ペース管理部１１４は、入替部１１５を呼び出す。これに応じ、入替部１１５は、ステップＳ１０３において決定されたデータ量だけデータの入替を実行する（ステップＳ１１１）。ステップＳ１１１においては、例えば、入替の対象である区画内のデータをメインメモリ１５に移動し、その後に入替先の区画に移動する。
【００６７】
ペース管理部１１４は、実際の実行回数がステップＳ１０３において決定された実行回数に到達したか判断する（ステップＳ１１３）。到達していない場合（ステップＳ１１３：Ｎｏルート）、ペース管理部１１４は、入替を実行した時刻を前回の実行時刻としてメインメモリ１５に格納する（ステップＳ１１５）。そしてステップＳ１０１に戻る。
【００６８】
実際の実行回数がステップＳ１０３において決定された実行回数に到達した場合（ステップＳ１１３：Ｙｅｓルート）、ペース管理部１１４は、ステップＳ１０５においてメインメモリ１５に格納された、入替の実行中であることを示すデータを削除する（ステップＳ１１７）。
【００６９】
ペース管理部１１４は、引数に「入替」を指定して頻度更新部１１２を呼び出す。これに応じ、頻度更新部１１２は、頻度更新処理を実行する（ステップＳ１１９）。頻度更新処理については、図１６を用いて説明する。
【００７０】
まず、頻度更新部１１２は、引数に「入替」が指定されているか判断する（ステップＳ１２１）。引数に「入替」が指定されている場合（ステップＳ１２１：Ｙｅｓルート）、呼び出しはペース管理部１１４からの呼び出しである。従って頻度更新部１１２は、入替が行われた区画について、区画データ格納部１０９に格納されている書き込み頻度の入替を実行する（ステップＳ１２３）。ステップＳ１２３においては、ステップＳ９３と同様の入替が行われる。
【００７１】
頻度更新部１１２は、引数に「入替」を指定して第２リスト更新部１１３を呼び出す。これに応じ、第２リスト更新部１１３は、リスト更新処理を実行する（ステップＳ１２５）。リスト更新処理については、後で説明する。
【００７２】
一方、ステップＳ１２１において引数に「入替」が指定されていないと判断された場合（ステップＳ１２１：Ｎｏルート）、呼び出しは加算部１１０からの呼び出しである。従って頻度更新部１１２は、ＯＳから現在時刻を取得する（ステップＳ１２７）。
【００７３】
頻度更新部１１２は、更新間隔を、更新間隔＝現在時刻−前回時刻により算出し（ステップＳ１２９）、メインメモリ１５に格納されている更新間隔を更新する。図１７に、メインメモリ１５に格納されるデータの一例を示す。図１７の例では、更新間隔と、旧計測時間と、計測時間と、前回時刻とが格納される。旧計測時間とは、開始時刻から前回時刻までの時間である。計測時間は、開始時刻から現在時刻までの時間である。前回時刻は、前回更新をした時刻である。
【００７４】
頻度更新部１１２は、旧計測時間を設定する（ステップＳ１３１）。ステップＳ１３１においては、メインメモリ１５に格納されている計測時間で、旧計測時間を更新する。また、頻度更新部１１２は、計測時間を、計測時間＝計測時間＋更新間隔により算出し（ステップＳ１３３）、メインメモリ１５に格納されている計測時間を更新する。
【００７５】
頻度更新部１１２は、書き込みが行われた区画について、書き込み頻度＝（（書き込み頻度＊旧計測時間）＋１）／計測時間を算出し、区画データ格納部１０９に格納されている書き込み頻度を更新する（ステップＳ１３５）。
【００７６】
頻度更新部１１２は、前回時刻を設定する（ステップＳ１３７）。ステップＳ１３７においては、メインメモリ１５に格納されている前回時刻を現在時刻で更新する。
【００７７】
頻度更新部１１２は、引数に「更新」を指定して第２リスト更新部１１３を呼び出す。これに応じ、第２リスト更新部１１３は、リスト更新処理を実行する（ステップＳ１３９）。リスト更新処理については、図１８を用いて説明する。
【００７８】
まず、第２リスト更新部１１３は、引数に「入替」が指定されているか判断する（図１８：ステップＳ１４１）。引数に「入替」が指定されている場合（ステップＳ１４１：Ｙｅｓルート）、第２リスト更新部１１３は、入替後の書き込み頻度に基づき、リストＬ４（すなわち、書き込み頻度のリスト）におけるポインタを設定する（ステップＳ１４５）。ここでは、入替後の書き込み頻度が昇順になるように設定が行われる。
【００７９】
一方、引数に「入替」が指定されていない場合（ステップＳ１４１：Ｎｏルート）、第２リスト更新部１１３は、更新後の書き込み頻度に基づき、リストＬ４におけるポインタを設定する（ステップＳ１４３）。ここでは、更新後の書き込み頻度が昇順になるように設定が行われる。そしてステップＳ４１の処理に戻る。
【００８０】
以上のような処理を実行すれば、入れ替えが有効であることが予測値の比較によって担保されるので、書き込み回数を効果的に平準化できるようになる。また、図１４に示したように区画のペアを選択するので、書き込み回数の平準化に寄与しないペアを排除し、効果的に平準化を行えるようになる。また、入替による書き込み回数の増加を反映した予測値を算出できるようになる。
【００８１】
図１９及び図２０を用いて、書き込み回数の平準化について具体例を示す。ここで、フラッシュメモリは８つの区画（区画ｓ０乃至ｓ７）を有し、区画の書き込み回数の上限は１００である。データａは４区画を消費し、データａの更新頻度はデータｂに比べて低い。データｂは３区画を消費し、データｂの更新頻度はデータａに比べて高い。時間帯ｔ０乃至ｔ３は、一定の長さを有する時間である。
【００８２】
まず、図１９を用いて、本実施の形態を利用しない場合におけるフラッシュメモリの状態について説明する。ここでは、データｂに対して４区画を割り当てているが、４区画のうち１区画を空状態にし、空状態の区画を循環させる。時間帯ｔ０においては書き込み要求が無く、書き込みが行われない。時間帯ｔ１においては、データｂについて５３の書き込み要求がある。時間帯ｔ１においては区画ｓ７が空き状態であるので、区画ｓ４乃至ｓ６の書き込み回数が５３インクリメントされる。時間帯ｔ２においては、データｂについて３７の書き込み要求がある。時間帯ｔ２においては区画ｓ６が空き状態であるので、区画ｓ４、ｓ５及びｓ７の書き込み回数が３７インクリメントされる。時間帯ｔ３においては、データｂについて８の書き込み要求がある。時間帯ｔ３においては区画ｓ５が空き状態であるので、区画ｓ４、ｓ６及びｓ７の書き込み回数が８インクリメントされ、この時点で区画ｓ４の書き込み回数が上限に達する。処理された書き込み要求の数は９８である。しかし、この時点で区画ｓ０乃至ｓ３にはほとんど書き込みが行われておらず、フラッシュメモリが効率的に使用されているとは言えない。
【００８３】
次に、図２０を用いて、本実施の形態におけるフラッシュメモリ１１の状態について説明する。ここでは、区画ｓ０乃至ｓ７のいずれかを空き状態とし、空き状態の区画を循環させる。時間帯ｔ０においては書き込み要求が無く、書き込みが行われない。時間帯ｔ１においては、データｂについて５３の書き込み要求がある。時間帯ｔ１においては区画ｓ７が空き状態であるので、区画ｓ４乃至ｓ６の書き込み回数が５３インクリメントされる。
【００８４】
時間帯ｔ２においては入替が行われており、データｂについて３７の書き込み要求がある。時間帯ｔ２においてはデータｂが区画ｓ０、ｓ１及びｓ３に格納されているため、区画ｓ０、ｓ１及びｓ３の書き込み回数が３７インクリメントされる。また、データの入替を行ったため、全区画の書き込み回数が１インクリメントされる。
【００８５】
時間帯ｔ３においては入替が行われており、データｂについて８の書き込み要求がある。時間帯ｔ３においてはデータｂが区画ｓ４、ｓ６及びｓ７に格納されているため、区画ｓ４、ｓ６及びｓ７の書き込み回数が８インクリメントされる。また、データの入替を行ったため、全区画の書き込み回数が１インクリメントされる。
【００８６】
時間帯ｔ４においては入替が行われており、データｂについて４３の書き込み要求がある。時間帯ｔ４においてはデータｂが区画ｓ１、ｓ３及びｓ４に格納されているため、区画ｓ１、ｓ３及びｓ４の書き込み回数が４３インクリメントされる。また、データの入替を行ったため、全区画の書き込み回数が１インクリメントされる。
【００８７】
時間帯ｔ５においては入替が行われており、データｂについて３２の書き込み要求がある。時間帯ｔ５においてはデータｂが区画ｓ４、ｓ６及びｓ７に格納されているため、区画ｓ４、ｓ６及びｓ７の書き込み回数が３２インクリメントされる。また、データの入替を行ったため、全区画の書き込み回数が１インクリメントされる。この時点で区画ｓ６の書き込み回数が上限に達する。処理された書き込み要求の数は１７３である。図１９の例と比較すると、１７３／９８≒１．８倍の書き込み要求を処理することができるようになる。
【００８８】
以上本発明の一実施の形態を説明したが、本発明はこれに限定されるものではない。例えば、上で説明した情報処理装置１の機能ブロック構成は実際のプログラムモジュール構成に一致しない場合もある。
【００８９】
また、上で説明した各データ保持形態の構成は一例であって、上記のような構成でなければならないわけではない。さらに、処理フローについては、処理結果が変わらない限り、処理の順番を入れ替えたり、複数ステップを並列に実行させるようにしても良い。
【００９０】
なお、ステップＳ８７において使用される所定値を動的に変更することで、より柔軟にペアの選択を行えるようにしてもよい。
【００９１】
なお、リストＬ１乃至Ｌ６の形式は、配列形式又は赤黒木形式等であってもよい。
【００９２】
なお、リストＬ１乃至Ｌ５について、昇順ではなく降順に要素の値を並べてもよい。
【００９３】
なお、情報処理装置１は、ＳＳＤ（Solid State Drive）を搭載したパーソナルコンピュータ或いは携帯端末（例えばスマートフォン）等であってもよい。
【００９４】
以上述べた本発明の実施の形態をまとめると、以下のようになる。
【００９５】
本実施の形態の第１の態様に係る情報処理装置は、（Ａ）複数の区画を有し且つ複数の区画の各々について実際の書き込み回数を記憶する記憶部と、（Ｂ）複数の区画の各々について、記憶部に記憶されている実際の書き込み回数から、データの入れ替えを実行しない場合における書き込み回数の予測値である第１の予測値と、所定条件を満たす区画のペアに対してデータの入れ替えを実行した場合における書き込み回数の予測値である第２の予測値とを算出する算出部と、（Ｃ）第１の予測値のうち最大の値が、第２の予測値のうち最大の値より大きい場合、所定の条件を満たす区画のペアに対してデータの入れ替えを実行する入替部とを有する。
【００９６】
このようにすれば、入れ替えが有効であることが担保されるので、書き込み回数を効果的に平準化できるようになる。
【００９７】
また、上で述べた算出部は、（ｂ１）区画のペアのうち第１の区画の実際の書き込み回数と、第１の区画の実際の書き込み回数から算出された第１の書き込み頻度とを用いて、第１の区画の第１の予測値を算出し、（ｂ２）第１の区画の実際の書き込み回数と、区画のペアのうち第２の区画の実際の書き込み回数から算出された第２の書き込み頻度とを用いて、第１の区画の第２の予測値を算出してもよい。このようにすれば、予測値を簡便に求めることができるようになる。
【００９８】
また、上で述べた所定条件は、区画のペアのうち第１の区画の第１の予測値と、当該区画のペアのうち第２の区画の第１の予測値との差が所定値以上であるという条件を含んでもよい。このようにすれば、書き込み回数の平準化に寄与する区画のペアに対して入れ替えを実行できるようになる。
【００９９】
また、第１の区画の第１の予測値と第２の区画の第１の予測値との差が最大になるように、第１の区画と第２の区画とが選択されてもよい。このようにすれば、最も効果的なペアを選択できるようになる。
【０１００】
また、本情報処理装置は、（Ｄ）予め取得した第２の設定値に基づき、入れ替えの対象ではない区画を決定する決定部をさらに有してもよい。そして、上で述べた所定条件は、第１の区画及び第２の区画が、入れ替えの対象ではない区画以外の区画であるという条件をさらに含んでもよい。このようにすれば、入れ替えの対象になるべきではないデータ或いは区画に対して入れ替えが行われるのを防げるようになる。
【０１０１】
また、本情報処理装置は、（Ｅ）所定の時刻を経過した場合又は所定のイベントが発生した場合、算出部及び入替部に処理を開始させる制御部をさらに有してもよい。このようにすれば、適切なタイミングに処理を行えるので、情報処理装置の資源の浪費を抑制できるようになる。
【０１０２】
また、本情報処理装置は、（Ｆ）予め取得した第１の設定値に基づき、入れ替えを実行する間隔、入れ替えの回数、及び１回の入れ替えにより移動するデータ量を算出し、算出結果に基づき入替部に入れ替えを実行させる入替管理部をさらに有してもよい。このようにすれば、例えば区画の数又はサイズ等に応じて適切に入れ替えを行えるようになる。
【０１０３】
また、上で述べた記憶部は、（ａ１）書き込み回数に上限がある記憶媒体であってもよい。
【０１０４】
本実施の形態の第２の態様に係る制御方法は、（Ｇ）複数の区画を有し且つ複数の区画の各々について実際の書き込み回数を記憶する記憶部における複数の区画の各々について、記憶部に記憶されている実際の書き込み回数から、データの入れ替えを実行しない場合における書き込み回数の予測値である第１の予測値と、所定条件を満たす区画のペアに対してデータの入れ替えを実行した場合における書き込み回数の予測値である第２の予測値とを算出し、（Ｈ）第１の予測値のうち最大の値が、第２の予測値のうち最大の値より大きい場合、所定の条件を満たす区画のペアに対してデータの入れ替えを実行する処理を含む。
【０１０５】
なお、上記方法による処理をコンピュータ又はプロセッサに行わせるためのプログラムを作成することができ、当該プログラムは、例えばフレキシブルディスク、ＣＤ−ＲＯＭ、光磁気ディスク、半導体メモリ、ハードディスク等のコンピュータ読み取り可能な記憶媒体又は記憶装置に格納される。尚、中間的な処理結果はメインメモリ等の記憶装置に一時保管される。
【図１】
2015181923.tif 000003
【図２】
2015181923.tif 000004
【図３】
2015181923.tif 000005
【図４】
2015181923.tif 000006
【図５】
2015181923.tif 000007
【図６】
2015181923.tif 000008
【図７】
2015181923.tif 000009
【図８】
2015181923.tif 000010
【図９】
2015181923.tif 000011
【図１０】
2015181923.tif 000012
【図１１】
2015181923.tif 000013
【図１２】
2015181923.tif 000014
【図１３】
2015181923.tif 000015
【図１４】
2015181923.tif 000016
【図１５】
2015181923.tif 000017
【図１６】
2015181923.tif 000018
【図１７】
2015181923.tif 000019
【図１８】
2015181923.tif 000020
【図１９】
2015181923.tif 000021
【図２０】
2015181923.tif 000022
【手続補正書】
【提出日】平成28年11月8日(2016.11.8)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数の区画を有し且つ前記複数の区画の各々について実際の書き込み回数を記憶する記憶部と、
前記複数の区画の各々について、前記記憶部に記憶されている前記実際の書き込み回数から、データの入れ替えを実行しない場合における書き込み回数の予測値である第１の予測値と、所定条件を満たす区画のペアに対して前記データの入れ替えを実行した場合における書き込み回数の予測値である第２の予測値とを算出する算出部と、
前記第１の予測値のうち最大の値が、前記第２の予測値のうち最大の値より大きい場合、前記所定条件を満たす区画のペアに対して前記データの入れ替えを実行する入替部と、
を有する情報処理装置。
【請求項２】
前記算出部は、
前記区画のペアのうち第１の区画の前記実際の書き込み回数と、前記第１の区画の前記実際の書き込み回数から算出された第１の書き込み頻度とを用いて、前記第１の区画の前記第１の予測値を算出し、
前記第１の区画の前記実際の書き込み回数と、前記区画のペアのうち第２の区画の前記実際の書き込み回数から算出された第２の書き込み頻度とを用いて、前記第１の区画の前記第２の予測値を算出する
請求項１記載の情報処理装置。
【請求項３】
前記所定条件は、前記区画のペアのうち第１の区画の前記第１の予測値と、当該区画のペアのうち第２の区画の前記第１の予測値との差が所定値以上であるという条件を含む
請求項１又は２記載の情報処理装置。
【請求項４】
前記第１の区画の前記第１の予測値と前記第２の区画の前記第１の予測値との差が最大になるように、前記第１の区画と前記第２の区画とが選択される
請求項３記載の情報処理装置。
【請求項５】
予め取得した第２の設定値に基づき、前記入れ替えの対象ではない区画を決定する決定部
をさらに有し、
前記所定条件は、前記第１の区画及び前記第２の区画が、前記入れ替えの対象ではない区画以外の区画であるという条件をさらに含む
請求項３記載の情報処理装置。
【請求項６】
所定の時刻を経過した場合又は所定のイベントが発生した場合、前記算出部及び前記入替部に処理を開始させる制御部
をさらに有する請求項１乃至５のいずれか１つ記載の情報処理装置。
【請求項７】
予め取得した第１の設定値に基づき、前記入れ替えを実行する間隔、前記入れ替えの回数、及び１回の前記入れ替えにより移動するデータ量を算出し、算出結果に基づき前記入替部に前記入れ替えを実行させる入替管理部
をさらに有する請求項１乃至６のいずれか１つ記載の情報処理装置。
【請求項８】
前記記憶部は、書き込み回数に上限がある記憶媒体である
請求項１乃至７のいずれか１つ記載の情報処理装置。
【請求項９】
複数の区画を有し且つ前記複数の区画の各々について実際の書き込み回数を記憶する記憶部における前記複数の区画の各々について、前記記憶部に記憶されている前記実際の書き込み回数から、データの入れ替えを実行しない場合における書き込み回数の予測値である第１の予測値と、所定条件を満たす区画のペアに対して前記データの入れ替えを実行した場合における書き込み回数の予測値である第２の予測値とを算出し、
前記第１の予測値のうち最大の値が、前記第２の予測値のうち最大の値より大きい場合、前記所定条件を満たす区画のペアに対して前記データの入れ替えを実行する
処理をコンピュータに実行させるための制御プログラム。
【請求項１０】
複数の区画を有し且つ前記複数の区画の各々について実際の書き込み回数を記憶する記憶部における前記複数の区画の各々について、前記記憶部に記憶されている前記実際の書き込み回数から、データの入れ替えを実行しない場合における書き込み回数の予測値である第１の予測値と、所定条件を満たす区画のペアに対して前記データの入れ替えを実行した場合における書き込み回数の予測値である第２の予測値とを算出し、
前記第１の予測値のうち最大の値が、前記第２の予測値のうち最大の値より大きい場合、前記所定条件を満たす区画のペアに対して前記データの入れ替えを実行する
処理をコンピュータが実行する制御方法。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０００８
【補正方法】変更
【補正の内容】
【０００８】
本発明に係る情報処理装置は、複数の区画を有し且つ複数の区画の各々について実際の書き込み回数を記憶する記憶部と、複数の区画の各々について、記憶部に記憶されている実際の書き込み回数から、データの入れ替えを実行しない場合における書き込み回数の予測値である第１の予測値と、所定条件を満たす区画のペアに対してデータの入れ替えを実行した場合における書き込み回数の予測値である第２の予測値とを算出する算出部と、第１の予測値のうち最大の値が、第２の予測値のうち最大の値より大きい場合、所定条件を満たす区画のペアに対してデータの入れ替えを実行する入替部とを有する。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００３１
【補正方法】変更
【補正の内容】
【００３１】
次に、図６を用いて、情報処理装置１のデータ設定部１０３が実行するデータ設定処理について説明する。まず、データ設定部１０３は、データの設定値（本実施の形態においては、データに対して入替を行うことができるか否かを表す設定値）の入力を検出したか判断する（図６：ステップＳ２１）。データの設定値は、例えば管理者等により入力される。データの設定値の入力を検出していない場合（ステップＳ２１：Ｎｏルート）、ステップＳ２１の処理に戻る。一方、データの設定値の入力を検出した場合（ステップＳ２１：Ｙｅｓルート）、データ設定部１０３は、データの設定値を設定値格納部１０５に格納する（ステップＳ２３）。そしてステップＳ２１の処理に戻る。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００３３
【補正方法】変更
【補正の内容】
【００３３】
次に、図７を用いて、情報処理装置１の区画設定部１０４が実行する区画設定処理について説明する。まず、区画設定部１０４は、区画の設定値（本実施の形態においては、区画に格納されているデータに対して入替を行うことができるか否かを表す設定値）の入力を検出したか判断する（図７：ステップＳ３１）。区画の設定値は、例えば管理者等により入力される。区画の設定値の入力を検出していない場合（ステップＳ３１：Ｎｏルート）、ステップＳ３１の処理に戻る。一方、区画の設定値の入力を検出した場合（ステップＳ３１：Ｙｅｓルート）、区画設定部１０４は、区画の設定値を設定値格納部１０５に格納する（ステップＳ３３）。そしてステップＳ３１の処理に戻る。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】００３８
【補正方法】変更
【補正の内容】
【００３８】
現在時刻が設定時刻より後ではない場合（ステップＳ４３：Ｎｏルート）、トリガ検出部１０６は、設定値格納部１０５に格納されているＣＰＵ負荷フラグの値が１であるか判断する（ステップＳ４５）。ＣＰＵ負荷フラグの値が１ではない場合（ステップＳ４５：Ｎｏルート）、ステップＳ５０の処理に移行する。
【手続補正６】
【補正対象書類名】明細書
【補正対象項目名】００４０
【補正方法】変更
【補正の内容】
【００４０】
ＣＰＵ負荷の値が所定の基準値より大きい場合（ステップＳ４９：Ｎｏルート）、トリガ検出部１０６は、設定値格納部１０５に格納されているＩＯ負荷フラグの値が１であるか判断する（ステップＳ５０）。ＩＯ負荷フラグの値が１ではない場合（ステップＳ５０：Ｎｏルート）、ステップＳ４１の処理に戻る。
【手続補正７】
【補正対象書類名】明細書
【補正対象項目名】００４６
【補正方法】変更
【補正の内容】
【００４６】
図１２に、区画データ格納部１０９に格納されるデータの一例を示す。図１２の例では区画の数がｎ（ｎは２以上の自然数）であり、ｎ区画の各々について区画データが格納される。区画データには、区画識別子と、書き込み回数と、書き込み回数のリストであるリストＬ１におけるポインタと、書き込み回数の第１の予測値と、書き込み回数の第１の予測値のリストであるリストＬ２におけるポインタと、書き込み回数の第２の予測値と、書き込み回数の第２の予測値のリストであるリストＬ３におけるポインタと、書き込み頻度と、書き込み頻度のリストであるリストＬ４におけるポインタと、入替を実行した場合における書き込み頻度（以下、入替後書き込み頻度と呼ぶ）と、入替後書き込み頻度のリストであるリストＬ５におけるポインタと、入替が実行される区画のリストであるリストＬ６におけるポインタとを含む。また、区画データ格納部１０９には、リストＬ１乃至Ｌ６におけるアンカーのポインタが格納される。
【手続補正８】
【補正対象書類名】明細書
【補正対象項目名】００４７
【補正方法】変更
【補正の内容】
【００４７】
図１３に、本実施の形態におけるリストの構造を示す。各要素には、前の要素を指し示すポインタ（以下、前要素ポインタと呼ぶ）と、次の要素を指し示すポインタ（以下、次要素ポインタと呼ぶ）とが付加される。アンカーに付加される前要素ポインタは「ＮＵＬＬ」であり、次要素ポインタは最初の要素（図１３の例では、要素［ｘ］）を指し示す。本実施の形態におけるリストＬ１乃至Ｌ５は、要素の値が昇順になるように並べられたリストである。従って、アンカーの次要素ポインタが指し示す要素の値が最も小さく、最後の要素の値が最も大きい。
【手続補正９】
【補正対象書類名】明細書
【補正対象項目名】００６１
【補正方法】変更
【補正の内容】
【００６１】
Ｍ１＞Ｍ２が成立する場合（ステップＳ７１：Ｙｅｓルート）、判定部１０７は、引数に「リストＬ６」を指定してペース管理部１１４を呼び出す。これに応じ、ペース管理部１１４は、ペース管理処理を実行する（ステップＳ７３）。ペース管理処理については、図１５を用いて説明する。
【手続補正１０】
【補正対象書類名】明細書
【補正対象項目名】００７０
【補正方法】変更
【補正の内容】
【００７０】
まず、頻度更新部１１２は、引数に「入替」が指定されているか判断する（図１６：ステップＳ１２１）。引数に「入替」が指定されている場合（ステップＳ１２１：Ｙｅｓルート）、呼び出しはペース管理部１１４からの呼び出しである。従って頻度更新部１１２は、入替が行われた区画について、区画データ格納部１０９に格納されている書き込み頻度の入替を実行する（ステップＳ１２３）。ステップＳ１２３においては、ステップＳ９３と同様の入替が行われる。
【手続補正１１】
【補正対象書類名】明細書
【補正対象項目名】００８１
【補正方法】変更
【補正の内容】
【００８１】
図１９及び図２０を用いて、書き込み回数の平準化について具体例を示す。ここで、フラッシュメモリ１１は８つの区画（区画ｓ０乃至ｓ７）を有し、区画の書き込み回数の上限は１００である。データａは４区画を消費し、データａの更新頻度はデータｂに比べて低い。データｂは３区画を消費し、データｂの更新頻度はデータａに比べて高い。時間帯ｔ０乃至ｔ３は、一定の長さを有する時間である。
【手続補正１２】
【補正対象書類名】明細書
【補正対象項目名】００８６
【補正方法】変更
【補正の内容】
【００８６】
時間帯ｔ４においては入替が行われており、データｂについて４３の書き込み要求がある。時間帯ｔ４においてはデータｂが区画ｓ０、ｓ２及びｓ３に格納されているため、区画ｓ０、ｓ２及びｓ３の書き込み回数が４３インクリメントされる。また、データの入替を行ったため、全区画の書き込み回数が１インクリメントされる。
【手続補正１３】
【補正対象書類名】明細書
【補正対象項目名】００９５
【補正方法】変更
【補正の内容】
【００９５】
本実施の形態の第１の態様に係る情報処理装置は、（Ａ）複数の区画を有し且つ複数の区画の各々について実際の書き込み回数を記憶する記憶部と、（Ｂ）複数の区画の各々について、記憶部に記憶されている実際の書き込み回数から、データの入れ替えを実行しない場合における書き込み回数の予測値である第１の予測値と、所定条件を満たす区画のペアに対してデータの入れ替えを実行した場合における書き込み回数の予測値である第２の予測値とを算出する算出部と、（Ｃ）第１の予測値のうち最大の値が、第２の予測値のうち最大の値より大きい場合、所定条件を満たす区画のペアに対してデータの入れ替えを実行する入替部とを有する。
【手続補正１４】
【補正対象書類名】明細書
【補正対象項目名】０１０４
【補正方法】変更
【補正の内容】
【０１０４】
本実施の形態の第２の態様に係る制御方法は、（Ｇ）複数の区画を有し且つ複数の区画の各々について実際の書き込み回数を記憶する記憶部における複数の区画の各々について、記憶部に記憶されている実際の書き込み回数から、データの入れ替えを実行しない場合における書き込み回数の予測値である第１の予測値と、所定条件を満たす区画のペアに対してデータの入れ替えを実行した場合における書き込み回数の予測値である第２の予測値とを算出し、（Ｈ）第１の予測値のうち最大の値が、第２の予測値のうち最大の値より大きい場合、所定条件を満たす区画のペアに対してデータの入れ替えを実行する処理を含む。
【国際調査報告】
2015181923.tif 000023
2015181923.tif 000024