(57)【要約】【課題】不揮発性メモリにデータを書き込む際に、書込み回数を平均化することができる情報処理装置を提供する。【解決手段】メモリへの書込み頻度に応じてデータを複数のグループにグループ化し、複数のグループそれぞれの配置が相異なる複数のメモリマップと、複数のグループに対応する範囲を跨ることなく定められた大きさの複数の領域にメモリを分割する分割手段と、書込み回数が基準値に達している領域があるかを判定する判定手段と、基準値に達している領域があると判定された場合に、基準値に達している領域に対してメモリへの書込み頻度が低いグループのデータを割り当て、その他の領域に対して高いグループのデータを割り当てた結果、メモリの全体への書込み回数が平均化されるようなメモリマップを複数のメモリマップから選択する選択手段と、選択されたメモリマップに従ってメモリにデータを書き込む書込手段とを備える。【選択図】図７
2010152723.tif 000002
【特許請求の範囲】
【請求項１】
メモリマップに従ってメモリにデータを書き込む情報処理装置であって、
前記メモリへの書込み頻度に応じてデータを複数のグループにグループ化し、前記複数のグループそれぞれの配置が相異なる複数のメモリマップと、
前記複数のグループに対応する範囲を跨ることなく定められた大きさの複数の領域に前記メモリを分割する分割手段と、
前記分割手段によって分割された複数の領域のうち、書込み回数が基準値に達している領域があるか否かを判定する判定手段と、
前記判定手段の結果、書込み回数が予め定められた基準値に達している領域があると判定された場合に、前記書込み回数が基準値に達している領域に対して前記メモリへの書込み頻度が低いグループのデータを割り当て、その他の領域に対して前記メモリへの書込み頻度が高いグループのデータを割り当てた結果、前記メモリの全体への書込み回数が平均化されるようなメモリマップを前記複数のメモリマップから選択する選択手段と、
前記選択手段によって選択されたメモリマップに従って、前記メモリにデータを書き込む書込手段と
を備えることを特徴とする情報処理装置。
【請求項２】
前記複数のグループそれぞれには、書込み回数予測値が予め定められており、
前記選択手段は、前記複数の領域それぞれの前記書込み回数に、該領域に対応するグループの前記書込み回数予測値を加算して領域と加算結果とが対応付けされたヒストグラムを生成し、前記加算結果の分散値が最も小さくなるようなメモリマップを選択することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記選択手段によってメモリマップが選択されると、前記加算結果の平均値を算出し、該算出された平均値が前記基準値より大きい場合に、前記基準値を更新する更新手段を更に備えることを特徴とする請求項２に記載の情報処理装置。
【請求項４】
メモリマップに従ってメモリにデータを書き込む情報処理装置において実行される情報処理方法であって、
前記情報処理装置の分割手段が、前記メモリへの書込み頻度に応じてデータを複数のグループにグループ化し、前記複数のグループそれぞれの配置が相異なる複数のメモリマップそれぞれにおける前記複数のグループに対応する範囲を跨ることなく定められた大きさの複数の領域に前記メモリを分割する分割工程と、
前記情報処理装置の判定手段が、前記分割工程において分割された複数の領域のうち、書込み回数が基準値に達している領域があるか否かを判定する判定工程と、
前記情報処理装置の選択手段が、前記判定工程における結果、書込み回数が予め定められた基準値に達している領域があると判定された場合に、前記書込み回数が基準値に達している領域に対して前記メモリへの書込み頻度が低いグループのデータを割り当て、その他の領域に対して前記メモリへの書込み頻度が高いグループのデータを割り当てた結果、前記メモリの全体への書込み回数が平均化されるようなメモリマップを前記複数のメモリマップから選択する選択工程と、
前記情報処理装置の書込手段が、前記選択工程において選択されたメモリマップに従って、前記メモリにデータを書き込む書込工程と
を備えることを特徴とする情報処理方法。
【請求項５】
メモリマップに従ってメモリにデータを書き込むための情報処理プログラムであって、
前記メモリへの書込み頻度に応じてデータを複数のグループにグループ化し、前記複数のグループそれぞれの配置が相異なる複数のメモリマップそれぞれにおける前記複数のグループに対応する範囲を跨ることなく定められた大きさの複数の領域に前記メモリを分割する分割手段と、
前記分割手段によって分割された複数の領域のうち、書込み回数が基準値に達している領域があるか否かを判定する判定手段と、
前記判定手段の結果、書込み回数が予め定められた基準値に達している領域があると判定された場合に、前記書込み回数が基準値に達している領域に対して前記メモリへの書込み頻度が低いグループのデータを割り当て、その他の領域に対して前記メモリへの書込み頻度が高いグループのデータを割り当てた結果、前記メモリの全体への書込み回数が平均化されるようなメモリマップを前記複数のメモリマップから選択する選択手段と、
前記選択手段によって選択されたメモリマップに従って、前記メモリにデータを書き込む書込手段と
してコンピュータを機能させることを特徴とする情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不揮発性メモリに対してデータを書き込む情報処理装置、方法、プログラムに関する。
【背景技術】
【０００２】
従来、インクジェットプリンタやレーザービームプリンタ等の記録装置には、装置状態や使用状況などを保存するために書込み可能な不揮発性メモリ（ＥＥＰＲＯＭ）を搭載している。そのような書込み可能な不揮発性メモリに保存される情報は、その内容と保存場所が予め決まっており、ユーザが印刷やプリンタの設定変更など、特定の処理を行うと対応した情報の値が更新される。
【０００３】
不揮発性メモリでは、同一セル（同一アドレス）のメモリ領域に対して行うデータの書込み制御があり、通常、１万〜１０万回程度となっている。そのため、ユーザが特定の処理を多く行うと、特定のアドレスへの書込み回数が限界を超えてしまい、アドレスへの書込みが正常にできなくなってしまう問題がある。
【０００４】
そのような問題は、家庭で使用される場合には使用頻度に限りがあるため、書込み回数が限界に達することは無かったが、ビジネス向けで使用された場合、ユーザが増えるため印刷回数等への書込みが増大してしまうので対策を考える必要がある。
【０００５】
そのような問題を解決するために、特定の領域に書込み回数が偏らないように平均化する手法が考えられている。特許文献１では、書込む情報が分からない不揮発性メモリを対象としており、不揮発性メモリをデータ保存領域と管理情報領域に分けている。データ保存領域は、更に一定サイズのブロックに分かれており、各ブロックには書込み回数と次のブロック番号を保存する領域がある。
【０００６】
管理情報領域は、保存しているデータ名とその開始および終了ブロック番号を管理している。この構造により、データをブロックのリスト構造として表現し、書込み回数が一定値を越えたブロックを異なるブロックへ写すことでデータの繋がりを損なうことなく平均化を実現している。
【０００７】
特許文献２では、書込む情報が既知の不揮発性メモリを対象としており、あらかじめ書込み頻度が高い情報をピックアップしておき、動作開始から一定期間それらの情報の書込み回数を記録する。一定期間後、記録した書込み回数を元に、ピックアップしておいた情報が使用できるメモリ拡張の領域を決定し、以後の書込み回数の記録を中止する。その後は、情報の書込み要求される度に保存する領域をシフトさせて書込むことで平均化を実現している。
【０００８】
特許文献３では、書込む情報が分からない不揮発性メモリを対象としており、管理情報用不揮発性メモリと、情報保存用の不揮発性メモリを備えている。保存用不揮発性メモリは、一定領域に区分されており、管理情報用不揮発性メモリには、書込みのチェック回数配列、論理・物理アドレス対応表、書込み回数履歴、交換フラグが含まれている。保存用不揮発性メモリへの書込み回数が１番目のチェック回数に達した時、書込み回数が最小のブロックと交換し、交換先のブロックの交換フラグを立てる。これを繰り返して、交換フラグの立っている回数が総ブロック数の半分に達した時、チェック回数配列を１進めて交換フラグを全クリアすることで平均化を実現している。
【特許文献１】特開昭６２−２８３４９６号公報
【特許文献２】特開平０５−１１３８５８号公報
【特許文献３】特開２００４−３２６５２３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
しかしながら、近年、記録装置の多機能化が進んでいるため、不揮発性メモリへ保存する情報を増やす必要がある一方、できるだけ不揮発性メモリのサイズを減らしてコストを削減したいという要求が高まっている。
【００１０】
特許文献１、３は共に、保存する情報がわからない場合を想定した手法であり、書込み回数の均一化を行うために多くの管理情報が必要である。例えば、１ブロックが４バイトである限界書込み回数１０万回の不揮発性メモリでは、書込み回数を保存するために情報と同サイズの領域、若しくは、その他の管理情報を含めて保存情報の倍以上のサイズが必要となり、平均化はできるがコスト削減が難しい。また、１ブロックを４バイトより大きくした場合、制御用の情報は減るが、１ブロック内に様々な書込み頻度の情報が含まれてしまい、効率的に不揮発性メモリを使用できなくなってしまう。
【００１１】
特許文献２では、書込み頻度が高い情報にのみ、頻度に応じて余分な領域を与えているため、全体で効率的に不揮発性メモリを使用できない。また、書込み頻度の高い情報を格納するために多くの空き容量を必要とするため、全体として多くの容量が必要となってしまう。
【００１２】
そこで、上記の点に鑑み、本発明は、不揮発性メモリにデータを書き込む際に、書込み回数を平均化することができる情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【００１３】
上記課題を解決するため、本発明に係る情報処理装置は、メモリマップに従ってメモリにデータを書き込む情報処理装置であって、前記メモリへの書込み頻度に応じてデータを複数のグループにグループ化し、前記複数のグループそれぞれの配置が相異なる複数のメモリマップと、前記複数のグループに対応する範囲を跨ることなく定められた大きさの複数の領域に前記メモリを分割する分割手段と、前記分割手段によって分割された複数の領域のうち、書込み回数が基準値に達している領域があるか否かを判定する判定手段と、前記判定手段の結果、書込み回数が予め定められた基準値に達している領域があると判定された場合に、前記書込み回数が基準値に達している領域に対して前記メモリへの書込み頻度が低いグループのデータを割り当て、その他の領域に対して前記メモリへの書込み頻度が高いグループのデータを割り当てた結果、前記メモリの全体への書込み回数が平均化されるようなメモリマップを前記複数のメモリマップから選択する選択手段と、前記選択手段によって選択されたメモリマップに従って、前記メモリにデータを書き込む書込手段とを備えることを特徴とする。
【００１４】
また、本発明に係る情報処理方法は、メモリマップに従ってメモリにデータを書き込む情報処理装置において実行される情報処理方法であって、前記メモリへの書込み頻度に応じてデータを複数のグループにグループ化し、前記複数のグループそれぞれの配置が相異なる複数のメモリマップそれぞれにおける前記複数のグループに対応する範囲を跨ることなく定められた大きさの複数の領域に前記メモリを分割する分割工程と、前記分割工程において分割された複数の領域のうち、書込み回数が基準値に達している領域があるか否かを判定する判定工程と、前記判定工程における結果、書込み回数が予め定められた基準値に達している領域があると判定された場合に、前記書込み回数が基準値に達している領域に対して前記メモリへの書込み頻度が低いグループのデータを割り当て、その他の領域に対して前記メモリへの書込み頻度が高いグループのデータを割り当てた結果、前記メモリの全体への書込み回数が平均化されるようなメモリマップを前記複数のメモリマップから選択する選択工程と、前記選択工程において選択されたメモリマップに従って、前記メモリにデータを書き込む書込工程とを備えることを特徴とする。
【００１５】
更に、本発明に係る情報処理プログラムは、メモリマップに従ってメモリにデータを書き込むための情報処理プログラムであって、前記メモリへの書込み頻度に応じてデータを複数のグループにグループ化し、前記複数のグループそれぞれの配置が相異なる複数のメモリマップそれぞれにおける前記複数のグループに対応する範囲を跨ることなく定められた大きさの複数の領域に前記メモリを分割する分割手段と、前記分割手段によって分割された複数の領域のうち、書込み回数が基準値に達している領域があるか否かを判定する判定手段と、前記判定手段の結果、書込み回数が予め定められた基準値に達している領域があると判定された場合に、前記書込み回数が基準値に達している領域に対して前記メモリへの書込み頻度が低いグループのデータを割り当て、その他の領域に対して前記メモリへの書込み頻度が高いグループのデータを割り当てた結果、前記メモリの全体への書込み回数が平均化されるようなメモリマップを前記複数のメモリマップから選択する選択手段と、前記選択手段によって選択されたメモリマップに従って、前記メモリにデータを書き込む書込手段としてコンピュータを機能させることを特徴とする。
【発明の効果】
【００１６】
本発明によれば、不揮発性メモリにデータを書き込む際に、書込み回数を平均化することができる。
【発明を実施するための最良の形態】
【００１７】
以下に、本発明を実施するための最良の形態について、図面を参照しながら詳しく説明する。なお、同一の構成要素には同一の参照番号を付して、説明を省略する。以下の実施例に記載されている構成要素はあくまで例示であり、本発明の範囲をそれらのみに限定する趣旨のものではない。
【００１８】
以下で説明する実施例では、インクジェット記録装置を例に説明する。しかしながら、本発明はこれに限定されるものではなく、ＣＰＵとＲＯＭとＲＡＭと書込み回数に限りがある不揮発性メモリを構成に含む情報処理装置であれば、どのような装置に対しても適用することができる。
【００１９】
本発明によれば、頻度情報を用いて予めメモリマップを複数作成しておき、不揮発性メモリに一定回数書込みが行われると、適用するメモリマップを変更する。その結果、不揮発性メモリの空き容量を必要とせずに、不揮発性メモリに対する書込み回数を全体的に平均化できる。また、予め作成したメモリマップを使用するので、書込み回数管理以外の無駄な制御用の情報を省くことができ、ＲＯＭより高価な書込み可能な不揮発性メモリの不要な使用を低減することができる。
【００２０】
更にまた、予めメモリマップを作成しておくので、従来のように、１つの情報が分散されて保存されることがない。そのため、不揮発性メモリにおけるある領域内の情報のサイズによってバースト転送等の書込み方式を自由に変更することができ、書込み速度を向上させることができる。
【００２１】
図１は、本発明に係る実施例における情報処理装置１の構成の概略を示すブロック図である。ＣＰＵ１０１は、外部のホスト機器から送信されたラスタ形式の画像データからの記録データの生成、記録制御のためのモータ駆動に関する命令、記録ヘッドの吐出タイミングの制御、ホスト機器から転送されたコマンドやデータの解析を行う。また、ＣＰＵ１０１は、表示・ＳＷ部１１０からのユーザの入力に応じた各種設定等も行う。また、ＣＰＵ１０１は、不揮発性メモリ１０５に対して、特定の処理や設定情報の更新（例えば電源ＯＦＦや用紙設定の変更など）を行った後、履歴や設定情報の書込み処理や、起動時におけるＲＡＭ１０３への情報の読出し処理を行う。
【００２２】
ＲＯＭ１０２には、不揮発性メモリ１０５に保存されている情報とその保存位置とを示すマップ情報が格納されている。更に、記録装置を駆動するための制御プログラム、各種固定データ（モータの駆動テーブル等）、フォントデータ等も格納されている。ＲＯＭ１０２に格納された制御プログラムは、ＣＰＵ１０１によって読み出されて実行される。各種固定データは、そのまま初期値として使用されるものと、ＲＡＭ１０３に展開されてＣＰＵにより加工されて使用されるものとがある。本実施例では、ＲＯＭ１０２には書き換え不能なマスクＲＯＭが使用されているので、読み出し専用として用いられる。
【００２３】
ＲＡＭ１０３は、ＣＰＵ１０１によって読み出された不揮発性メモリ１０５のデータを格納するために使用される。更に、ＲＡＭ１０３は、プログラム実行に必要なワークメモリ、インターフェース（Ｉ／Ｆ）１０４から入力データの一時格納場所としての受信バッファ、及び、画像データを記録用に展開したデータを格納する記録バッファとしても使用される。
【００２４】
Ｉ／Ｆ１０４は、不図示のホスト装置と接続され、記録すべき画像のデータや各種制御コマンド、及び、ダウンロードされるプログラムデータ等のデータを受信する。本実施例において、Ｉ／Ｆ１０４は、ＵＳＢの規格に準拠した電気的仕様を備えており、ホスト装置からのデータだけでなく、プリンタの状態をホストに転送するように、双方向の通信が可能となっている。
【００２５】
不揮発性メモリ１０５には、プリンタの設定状態の情報が格納されているだけでなく、その他、記録枚数、インク残量などの情報も格納されている。プリンタの設定状態としては、対応用紙、自動電源ＯＮ／ＯＦＦなどの機能項目などの情報が格納されている。メインバッファ１０６、テンプバッファ１０７は、不揮発性メモリ１０５の内容の読込み、書込み、比較に使用されるＲＡＭ１０３上のバッファメモリである。バッファサイズは、不揮発性メモリ１０５と同じサイズであり、保存されている情報の内容、位置も不揮発性メモリ１０５における構成と同じである。
【００２６】
モータコントローラ１０９は、不図示のプリンタにおける主走査方向に記録ヘッドを移動（走査）させるキャリッジモータと、記録ヘッドの１回又は複数回の走査毎に記録媒体を搬送させる搬送モータとを制御する。モータコントローラ１０９に対する制御はＣＰＵ１０１が行う。また、記録操作は、キャリッジモータの等速域と加減速領域とが用いられて行われる。記録ヘッドコントローラ１０８は、記録ヘッドの駆動を制御するように、記録ヘッドに対してクロック信号、記録データ、駆動タイミングを規定する信号（駆動パルス）等を供給する。
【００２７】
表示・ＳＷ部１１０は、ユーザが記録装置に対する指示を入力するための操作スイッチや、ユーザに装置の状態等を通知するための表示パネル等を含んでいる。バスライン１１１は、データを転送するためのデータ及びアドレスバスである。ＣＰＵ１０１は、バスライン１１１を介して、１０２から１０９までの各ユニットを制御する。
【００２８】
図２、図３、図４は、本実施例において用いられる１６ビット単位でアクセス可能な１０２４バイトの不揮発性メモリ１０５の３つのメモリマップを示す図である。それらの３つのマップは、保存されている内容は同じであるが、不揮発性メモリへの書込み頻度に応じてデータが複数のグループにグループ化され、複数のグループそれぞれの配置が相異なっている。これらのメモリマップは例えば、ＲＯＭ等の記憶領域に格納されている。
【００２９】
本実施例において、マップは３つではなく、２つ以上であればいくつのマップを用いても良い。また、マップは今まで集計してきた書込み頻度情報を元にして、各情報がグループ化されている（図２に示す「Ｇｒ」）。本実施例においては、図２に示すように、書込み頻度高グループ２０１、書込み頻度中グループ２０２、書込み頻度低グループ２０３の３グループにグループ化されている。
【００３０】
更に、各マップは、例えば、不揮発性メモリが３２個に分割された領域０〜３１への書込み回数を管理する書込み回数管理領域２０４を有する。書込み頻度高グループ２０１には、チェックサム２１０、ユーザ使用履歴２１１、プリンタ状態２１２等が含まれている。書込み頻度中グループ２０２には、エラー情報２１３、画像補正設定２１４、用紙設定２１５等が含まれている。書込み頻度低グループ２０３には、ＬＣＤコントラスト２１６、仕向け情報２１７、モータ補正値２１８、ヘッド制御補正値２１９等が含まれている。
【００３１】
書込み回数管理領域２０４には、領域毎の書込み回数が管理されている。本実施例において、領域とは、不揮発性メモリ１０５において分割された、書込み回数を管理するための単位をいう。この書込み回数は、図２〜図４に示す各グループ（Ｇｒ）に跨ることのない単位として例えば３２バイトを１領域とされる。つまり、例えば、アドレス０〜３１の３２バイトが領域０とされる。図２において、アドレス０はビット０〜７を示し、アドレス１はビット８〜１５を示している。
【００３２】
即ち、領域０への書込み回数２２０はアドレス０〜３１の書込み回数が、領域３１への書込み回数２２２は、アドレス９９２〜１０２３の書込み回数が格納されている。領域の大きさを例えば各グループの最大公約数とすることで領域がグループを跨ぐことがない。そのため、その領域は、同じグループ内にあるので書込み頻度が同程度となる。従って、領域単位で不揮発性メモリに書込みを行っても、その領域のデータで書込みの頻度が大きく異なることは少なくなり、不揮発性メモリを効率的に使用することができる。
【００３３】
また、図２、図３では、グループ毎に纏めて情報を保存しているが、図３のようにグループを分離して保存しても構わない。図３では、書込み頻度高グループ２０１がアドレス２５６〜３１８とアドレス６４０〜８３０に、書込み頻度中グループ２０２がアドレス０〜２５４とアドレス８９６〜１０２２に分離して保存されている。
【００３４】
図５は、図２に示したマップを表すテーブルの一部であり、このテーブルがＲＯＭ１０２に保存されている。本実施例において、このテーブルをマップ情報と呼ぶ。このテーブルには、各情報に対応する情報ＩＤ、情報のアドレスオフセット値、情報のビットオフセット値、及び、情報のサイズが含まれている。
【００３５】
例えば、図５の上から３行目にあるプリンタ状態２１２は、情報ＩＤがＩＤ＿ＰＲＴ＿ＳＴ、アドレスオフセット値が２５４、ビットオフセット値が８、サイズが８ビットである。図２、図３、図４に対応するマップ情報も、図３と同様の形式でＲＯＭ１０２に保存されている。
【００３６】
図６は、本実施例において、本体に電源が投入された、つまり、コンセント等からの電力供給を受けた際の不揮発性メモリ１０５の初期化処理の手順を示すフローチャートである。以下、図６〜図８に示すフローチャートの処理は、情報処理装置１のＣＰＵ１０１によって実行される。
【００３７】
まず、ステップＳ４０１において、電源が投入されるとＣＰＵ１０１が不揮発性メモリ１０５から情報を読出し、ＲＡＭ１０３上に存在するメインバッファ１０６へ、不揮発性メモリのマップ情報に従って保存する処理を行う。これにより、不揮発性メモリ１０５の内容とメインバッファ１０６の内容が完全に一致する。
【００３８】
ステップＳ４０２において、メインバッファ１０６へ保存した情報をテンプバッファ１０７へコピーする処理を行う。ステップＳ４０２の処理によって、テンプバッファ１０７の内容をメインバッファ１０６と同じにする。
【００３９】
ユーザがユーザインタフェース等で用紙設定等の設定データを変更すると、メインバッファ１０６内にあるデータが変更される。従って、メインバッファからテンプバッファに内容をコピーしておくことによって、ユーザによるデータの変更後の不揮発性メモリへの書込み時にメインバッファ１０６とテンプバッファ１０７との内容を比較することで、更新されたデータが分かるようになる。
【００４０】
ステップＳ４０３において、不揮発性メモリへの書込み回数の規定値を閾値Ｎとして定める。閾値Ｎは、適応するメモリマップを変更する基準を示す変数である。また、規定値は、予め定められた値であっても良いし、ランダムに設定された値や、書込み頻度情報や、不揮発性メモリの仕様等から定められても良い。
【００４１】
図７は、本実施例における不揮発性メモリへの書込み処理の手順を示すフローチャートである。図７の処理は、パワーオフ、設定情報などの特定情報の更新によって不揮発性メモリ１０５への書込みイベントが発生した時に実行される。即ち、上述したようなメインバッファのデータ内容が変更されて、そのデータ内容を不揮発性メモリに書き込む際に、以下の処理が実行される。
【００４２】
ステップＳ５０１において、ＲＡＭ１０３上にあるメインバッファ１０６とテンプバッファ１０７との内容の比較を行う。これにより、ユーザにより内容が変更、更新されているデータを検出する。
【００４３】
ステップＳ５０２において、図５に示すＲＯＭ１０２に格納されたマップ情報からステップＳ５０１で検出されたデータのＩＤを取得し、更新されたデータのＩＤのリストである更新ＩＤリストを作成する。作成された更新ＩＤリストは、ＲＡＭ１０３等に格納するようにしても良い。
【００４４】
ステップＳ５０３において、ステップＳ５０２で作成された更新ＩＤリストと図５に示すＲＯＭ１０２に格納されたマップ情報とから、更新されているデータが含まれている領域を判別する。さらに、その判別された領域に対する書込み回数情報を取得する。書込み回数情報は、ＩＤをキーとして図５に示すマップ情報からそのデータが保存されている場所が含まれる領域を認識し、書込み回数管理領域における該当する領域の書込み回数を取得する。
【００４５】
ステップＳ５０４において、ステップＳ５０２で作成された更新ＩＤリストと、ステップＳ５０３で取得された領域の書込み回数とを用いて、後述のマップ変更処理を行う。
【００４６】
ステップＳ５０５において、更新ＩＤリストをもとに、書込み回数を更新する。更新ＩＤリストは、ステップＳ５０４のマップ変更処理においてマップが変更される場合には、変更されたデータを含む全てのデータがリストに含まれるように変更されている。
【００４７】
ステップＳ５０６において、メインバッファ１０６のチェックサムが計算されてメインバッファのデータの内容が補償できるデータであることが確認される。その際には、計算されたチェックサムでもってチェックサム２１０が更新される。
【００４８】
ステップＳ５０７において、ステップＳ５０２で作成した更新ＩＤリストと現在のマップ情報を元にして、メインバッファ１０６のデータを不揮発性メモリ１０５へ書込む処理を行う。メインバッファ１０６全体の大きさは、不揮発性メモリ１０５と全く同じであるため、メインバッファ１０６の内容をそのまま不揮発性メモリへ書込むことができる。
【００４９】
ステップＳ５０８において、メインバッファ１０６の内容をテンプバッファ１０７にコピーする処理を行う。テンプバッファ１０７に、書込み直後のメインバッファ１０６の内容をコピーすることで、次回書込み要求があったときに更新されたデータが判別できるようになる。
【００５０】
図８は、図７のステップＳ５０４で示されたマップ変更処理の手順を示すフローチャートである。ステップＳ６０１において、ステップＳ５０２でリストアップされた更新データ（即ち、ユーザにより変更されたデータに対応）を含む不揮発性メモリ１０５で、書込み回数がＮ−１回（基準値）に達している領域を検索する。そのような領域が存在する場合には、ステップＳ６０２に進み、一方、そのような領域がない場合には、本処理を終了する。即ち、ステップＳ６０１においては、不揮発性メモリ１０５内の領域のうち、書込み回数がほぼ限界値に達している領域を検索している。
【００５１】
ステップＳ６０２において、ステップＳ６０１において検索された領域に対して、領域交換フラグを立てる。これは、例えば、図２〜図４に示す各マップの書込み回数管理領域２０４中の交換フラグに「１」を書き込むことにより行う。交換フラグを立てることにより、その領域に書き込まれるデータの変更が必要か否かを明確にすることができ、無駄なマップ変更をしないようにすることができる。
【００５２】
ステップＳ６０３において、図２〜４のような複数のマップから平均化を行うのに最適なマップを選択する処理を行う。ここで、不揮発性メモリ１０５の各領域の書込み回数に対して、例えば図２の書込み頻度高Ｇｒ２０１、書込み回数頻度中Ｇｒ２０２、書込み回数頻度低Ｇｒ２０３、書込み回数管理領域２０４に予め定められた書込み回数予測値を加算する。ここで、例えば、書込み頻度高Ｇｒ２０１には５０００回、書込み頻度中Ｇｒ２０２には３０００回、書込み頻度低Ｇｒ２０３には１０００回という予め定められた書込み回数予測値が定められている。
【００５３】
上述の結果、不揮発性メモリ１０５の各領域を横軸とし、書込み回数と書込み回数予測値とが加算された加算結果を縦軸として対応付けたヒストグラムを生成することができる。そのような方法を例えば、図３、図４に示すマップにについても行うと、上述のヒストグラムは、３種類生成されることになる。３種類それぞれのヒストグラムについて、書込み回数の分散値を算出し、最も分散値が小さくなるようなマップを図２〜図４から選択する。
【００５４】
そのように選択されたマップは、例えば不揮発性メモリで書込み回数が比較的高い領域に対して書込み頻度が低いデータが割り当てられ、かつ、不揮発性メモリで書込み回数が比較的低い領域に対して書込み頻度が高いデータが割り当てられている可能性が高い。本実施例においては、不揮発性メモリで書込みの上限値に達しかけている領域を抽出し、そのような領域に対して比較的低い書込み頻度のデータを割り当て、他の領域に対しては、比較的高い書込み頻度のデータを割り当てることができるようなマップを決定する。そのような決定は、予め定められたマップから選択することによって行われる。選択されたマップでもって、最終的に不揮発性メモリ１０５に書込むので、不揮発性メモリ１０５内の領域は、全体として平均化された書込み回数となり、不揮発性メモリの寿命を長く保つことができる。
【００５５】
ステップＳ６０４において、更新ＩＤリストに設定されている内容と、ステップＳ６０３において選択されたマップとを組み合わせて、ユーザによって設定されたデータを含んだメモリマップを生成する。
【００５６】
ステップＳ６０５において、予め定められた閾値Ｎを更新するか否かを判断する。ステップＳ６０３の処理の結果、不揮発性メモリ内の領域の書込み平均値が既に閾値Ｎを超えてしまっていると、選択されたマップで不揮発性メモリに書き込んだ後、本処理を再度行うと、フラグが全領域で立ってしまうおそれがある。その場合には、領域による頻度の分布が正しく分からないので、ステップＳ６０５の処理の後、閾値Ｎを例えば、より高く再設定することによって、次の本処理のおける判定を正しく行うようにする。
【００５７】
本実施例においては、例えば、選択されたマップに対応する上述のヒストグラムから書込み回数の平均値を求め、その平均値が閾値Ｎを超えているか否かによって判断する。その場合には、平均値が閾値Ｎを超えているのであれば、閾値Ｎを更新し、超えていないのであれば更新しない。ここで、ステップＳ６０５の処理は、あくまでも閾値を更新する判断を行う処理であるので、提示した方法以外にも、交換フラグの数や、上述の分散値等を使用して判断するようにしても良い。
【００５８】
ステップＳ６０６において、不揮発性メモリ１０５内の全領域の交換フラグをクリアする。本処理によって、次回からのマップ変更処理の判断に全領域が含まれるようにする。ステップＳ６０７において、閾値Ｎに値を加えることで次回のマップ変更回数を定めている。加えられる値は、例えば、閾値Ｎに加えられた合計値が不揮発性メモリの書込み回数の上限値を超えないような値から決定される。本実施例において、ステップＳ６０６とＳ６０７は逆の順番で実行されても良い。ステップＳ６０８において、選択されたメモリマップに従って、メインバッファ１０６の内容を更新する。
【００５９】
本発明には、プログラム（情報処理プログラム）コードの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム（ＯＳ）等が実際の処理の一部又は全部を行い、その処理によって前述した実施例の機能が実現される場合も含まれる。更に、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張カードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた場合についても、本発明は適用される。その場合に、書き込まれたプログラムコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるＣＰＵ等が実際の処理の一部又は全部を行い、その処理によって前述した実施例の機能が実現される。
【図面の簡単な説明】
【００６０】
【図１】本発明に係る実施例における情報処理装置の構成の概略を示すブロック図である。
【図２】不揮発性メモリのメモリマップの第１の例を示す図である。
【図３】不揮発性メモリのメモリマップの第２の例を示す他の図である。
【図４】不揮発性メモリのメモリマップの第３の例を示す他の図である。
【図５】ＲＯＭに格納されるマップ情報の一例を示す図である。
【図６】本実施例における不揮発性メモリの初期化処理の手順を示すフローチャートである。
【図７】本実施例における不揮発性メモリへの書込み処理の手順を示すフローチャートである。
【図８】図７のステップＳ５０４で示すマップ変更処理の手順を示すフローチャートである。
【符号の説明】
【００６１】
１  情報処理装置
１１１  バスライン
【図１】
2010152723.tif 000003
【図２】
2010152723.tif 000004
【図３】
2010152723.tif 000005
【図４】
2010152723.tif 000006
【図５】
2010152723.tif 000007
【図６】
2010152723.tif 000008
【図７】
2010152723.tif 000009
【図８】
2010152723.tif 000010