(57)【特許請求の範囲】
【請求項１】
複数のブロックを含む記憶装置と、
前記複数のブロックに対するデータの書き込みを制御し、前記複数のブロックのうちデータを格納する第１のブロックの第１の書き込み回数が、データを格納する第２のブロックの第２の書き込み回数よりも大きい場合、前記第１のブロックのデータを前記複数のブロックのうち予備の第３のブロックへ移動させ、前記第１のブロックを予備のブロックに変更する制御部と、
を備えることを特徴とする情報処理装置。
【請求項２】
前記制御部は、
前記複数のブロックのうち予備のブロックの識別情報を格納する第１の格納部と、
前記複数のブロックのうち予備のブロックの識別情報を格納する第２の格納部と、
を含み、
前記第１の格納部は、第４のブロックの識別情報を格納し、
前記第２の格納部は、前記第３のブロックの識別情報を格納し、
前記制御部は、
書き込み要求を受信した場合、前記書き込み要求が示す論理アドレスに対応する第５のブロックのデータを消去し、前記第１の格納部から前記第４のブロックの識別情報を取り出し、前記書き込み要求が示す書き込みデータを前記第４のブロックに書き込み、前記第５のブロックの識別情報を前記第１の格納部に格納し、
前記第１のブロックのデータを前記第３のブロックへ移動させた場合、前記第２の格納部から前記第３のブロックの識別情報を取り出し、前記第１のブロックの識別情報を前記第２の格納部に格納することを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記制御部は、前記第１の書き込み回数が前記複数のブロックの書き込み回数の中で最も大きい場合、前記第１のブロックのデータを前記第３のブロックへ移動させることを特徴とする請求項１又は２記載の情報処理装置。
【請求項４】
前記制御部は、
前記複数のブロックのうち予備のブロックの識別情報を格納する第３の格納部をさらに含み、
前記第３の格納部は、第６のブロックの識別情報を格納し、
前記制御部は、
前記第１の書き込み回数が前記第２の書き込み回数よりも大きく、前記第１の書き込み回数に１を加算した第３の書き込み回数が所定値よりも小さい場合、前記第２の格納部から前記第３のブロックの識別情報を取り出し、前記第１のブロックのデータを前記第３のブロックへ移動させ、前記第１のブロックの識別情報を前記第２の格納部に格納し、
前記第１の書き込み回数が前記第２の書き込み回数よりも大きく、前記第３の書き込み回数が前記所定値よりも大きい場合、前記第３の格納部から前記第６のブロックの識別情報を取り出し、前記第１のブロックのデータを前記第６のブロックへ移動させ、前記第１のブロックの識別情報を前記第３の格納部に格納することを特徴とする請求項１乃至３のいずれか１項に記載の情報処理装置。
【請求項５】
前記制御部は、前記第１のブロックのデータを前記第６のブロックへ移動させた場合、前記所定値を前記第３の書き込み回数に更新することを特徴とする請求項４記載の情報処理装置。
【請求項６】
記憶装置に含まれる複数のブロックに対するデータの書き込みを制御し、前記複数のブロックのうちデータを格納する第１のブロックの第１の書き込み回数が、データを格納する第２のブロックの第２の書き込み回数よりも大きい場合、前記第１のブロックのデータを前記複数のブロックのうち予備の第３のブロックへ移動させ、前記第１のブロックを予備のブロックに変更する制御部
を備えることを特徴とする書き込み制御回路。
【請求項７】
前記制御部は、
前記複数のブロックのうち予備のブロックの識別情報を格納する第１の格納部と、
前記複数のブロックのうち予備のブロックの識別情報を格納する第２の格納部と、
を含み、
前記第１の格納部は、第４のブロックの識別情報を格納し、
前記第２の格納部は、前記第３のブロックの識別情報を格納し、
前記制御部は、
書き込み要求を受信した場合、前記書き込み要求が示す論理アドレスに対応する第５のブロックのデータを消去し、前記第１の格納部から前記第４のブロックの識別情報を取り出し、前記書き込み要求が示す書き込みデータを前記第４のブロックに書き込み、前記第５のブロックの識別情報を前記第１の格納部に格納し、
前記第１のブロックのデータを前記第３のブロックへ移動させた場合、前記第２の格納部から前記第３のブロックの識別情報を取り出し、前記第１のブロックの識別情報を前記第２の格納部に格納することを特徴とする請求項６記載の書き込み制御回路。
【請求項８】
前記制御部は、
前記複数のブロックのうち予備のブロックの識別情報を格納する第３の格納部をさらに含み、
前記第３の格納部は、第６のブロックの識別情報を格納し、
前記制御部は、
前記第１の書き込み回数が前記第２の書き込み回数よりも大きく、前記第１の書き込み回数に１を加算した第３の書き込み回数が所定値よりも小さい場合、前記第２の格納部から前記第３のブロックの識別情報を取り出し、前記第１のブロックのデータを前記第３のブロックへ移動させ、前記第１のブロックの識別情報を前記第２の格納部に格納し、
前記第１の書き込み回数が前記第２の書き込み回数よりも大きく、前記第３の書き込み回数が前記所定値よりも大きい場合、前記第３の格納部から前記第６のブロックの識別情報を取り出し、前記第１のブロックのデータを前記第６のブロックへ移動させ、前記第１のブロックの識別情報を前記第３の格納部に格納することを特徴とする請求項７記載の書き込み制御回路。
【請求項９】
記憶装置に含まれる複数のブロックに対するデータの書き込みを制御し、
前記複数のブロックのうちデータを格納する第１のブロックの第１の書き込み回数が、データを格納する第２のブロックの第２の書き込み回数よりも大きい場合、前記第１のブロックのデータを前記複数のブロックのうち予備の第３のブロックへ移動させ、前記第１のブロックを予備のブロックに変更する、
ことを特徴とする書き込み制御方法。
【請求項１０】
前記複数のブロックのうち予備のブロックの識別情報を格納する第１の格納部は、第４のブロックの識別情報を格納し、前記複数のブロックのうち予備のブロックの識別情報を格納する第２の格納部は、前記第３のブロックの識別情報を格納し、
書き込み要求を受信した場合、前記書き込み要求が示す論理アドレスに対応する第５のブロックのデータを消去し、前記第１の格納部から前記第４のブロックの識別情報を取り出し、前記書き込み要求が示す書き込みデータを前記第４のブロックに書き込み、前記第５のブロックの識別情報を前記第１の格納部に格納し、
前記第１のブロックのデータを前記第３のブロックへ移動させた場合、前記第２の格納部から前記第３のブロックの識別情報を取り出し、前記第１のブロックの識別情報を前記第２の格納部に格納することを特徴とする請求項９記載の書き込み制御方法。
【請求項１１】
前記複数のブロックのうち予備のブロックの識別情報を格納する第３の格納部は、第６のブロックの識別情報を格納し、
前記第１の書き込み回数が前記第２の書き込み回数よりも大きく、前記第１の書き込み回数に１を加算した第３の書き込み回数が所定値よりも小さい場合、前記第２の格納部から前記第３のブロックの識別情報を取り出し、前記第１のブロックのデータを前記第３のブロックへ移動させ、前記第１のブロックの識別情報を前記第２の格納部に格納し、
前記第１の書き込み回数が前記第２の書き込み回数よりも大きく、前記第３の書き込み回数が前記所定値よりも大きい場合、前記第３の格納部から前記第６のブロックの識別情報を取り出し、前記第１のブロックのデータを前記第６のブロックへ移動させ、前記第１のブロックの識別情報を前記第３の格納部に格納することを特徴とする請求項１０記載の書き込み制御方法。
【請求項１２】
記憶装置に含まれる複数のブロックに対するデータの書き込みを制御し、
前記複数のブロックのうちデータを格納する第１のブロックの第１の書き込み回数が、データを格納する第２のブロックの第２の書き込み回数よりも大きい場合、前記第１のブロックのデータを前記複数のブロックのうち予備の第３のブロックへ移動させ、前記第１のブロックを予備のブロックに変更する、
処理をコンピュータに実行させる書き込み制御プログラム。
【請求項１３】
前記コンピュータは、
前記複数のブロックのうち予備のブロックの識別情報を格納する第１の格納部と、
前記複数のブロックのうち予備のブロックの識別情報を格納する第２の格納部と、
を含み、
前記第１の格納部は、第４のブロックの識別情報を格納し、
前記第２の格納部は、前記第３のブロックの識別情報を格納し、
前記コンピュータは、
書き込み要求を受信した場合、前記書き込み要求が示す論理アドレスに対応する第５のブロックのデータを消去し、前記第１の格納部から前記第４のブロックの識別情報を取り出し、前記書き込み要求が示す書き込みデータを前記第４のブロックに書き込み、前記第５のブロックの識別情報を前記第１の格納部に格納し、
前記第１のブロックのデータを前記第３のブロックへ移動させた場合、前記第２の格納部から前記第３のブロックの識別情報を取り出し、前記第１のブロックの識別情報を前記第２の格納部に格納することを特徴とする請求項１２記載の書き込み制御プログラム。
【請求項１４】
前記コンピュータは、
前記複数のブロックのうち予備のブロックの識別情報を格納する第３の格納部をさらに含み、
前記第３の格納部は、第６のブロックの識別情報を格納し、
前記コンピュータは、
前記第１の書き込み回数が前記第２の書き込み回数よりも大きく、前記第１の書き込み回数に１を加算した第３の書き込み回数が所定値よりも小さい場合、前記第２の格納部から前記第３のブロックの識別情報を取り出し、前記第１のブロックのデータを前記第３のブロックへ移動させ、前記第１のブロックの識別情報を前記第２の格納部に格納し、
前記第１の書き込み回数が前記第２の書き込み回数よりも大きく、前記第３の書き込み回数が前記所定値よりも大きい場合、前記第３の格納部から前記第６のブロックの識別情報を取り出し、前記第１のブロックのデータを前記第６のブロックへ移動させ、前記第１のブロックの識別情報を前記第３の格納部に格納することを特徴とする請求項１３記載の書き込み制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、書き込み制御回路、書き込み制御方法、及び書き込み制御プログラムに関する。
【背景技術】
【０００２】
近年の情報処理システムでは、不揮発性記憶装置が広く使用されている。例えば、不揮発性記憶装置の一種であるＮＡＮＤフラッシュメモリデバイスは、従来の磁気ディスク装置等に比べると動作速度が高速であり、他の不揮発性記憶装置よりも大容量化が容易である、というメリットを有する。このため、ＮＡＮＤフラッシュメモリデバイスは、記憶システムやストレージシステム等の様々な分野で利用されている。以下では、ＮＡＮＤフラッシュメモリデバイスを「ＮＡＮＤデバイス」と記すことがある。【０００３】
ＮＡＮＤデバイスには前述のようなメリットがある反面、データの上書きに対応していないため、ＮＡＮＤデバイスに書き込まれたデータを書き換える場合、データを一度消去してから、改めてデータが書き込まれる。また、データの書き換えによる消去を行う度に記憶素子が劣化するため、ある程度の回数（例えば、１万回〜１０万回程度）の消去を行うと、それ以上書き込みを行うことは困難になる。【０００４】
このような書き込み回数に対する制約から、ＮＡＮＤデバイスコントローラは、ＮＡＮＤデバイスの書き込み・消去の制御を行うためのアドレス管理機構とウェアレベリング機構とを有することがある（例えば、特許文献１を参照）。ウェアレベリング機構は、ＮＡＮＤデバイスの信頼性を高めるために、データの書き込み回数を平準化する機構である。【０００５】
図１は、このような従来のＮＡＮＤデバイスを含む情報処理装置の構成例を示している。図１の情報処理装置１０１は、中央処理装置（ＣＰＵ）１１１、コントローラ１１２、及びＮＡＮＤデバイス１１３を含む。【０００６】
ＮＡＮＤデバイス１１３内の記憶領域は、ブロック（物理ブロック）と呼ばれる単位に分割され、ＮＡＮＤデバイス１１３は、ブロック毎にデータの入出力を行う。ブロックがさらにページと呼ばれる単位に分割され、ＮＡＮＤデバイス１１３がページ毎にデータの入出力を行うこともある。【０００７】
この例では、ＮＡＮＤデバイス１１３内の記憶領域は、＃１〜＃Ｎ（Ｎは２以上の整数）のＮ個のブロックに分割されており、それらのブロックには、Ｐ１〜ＰＮの物理アドレスが割り当てられている。したがって、コントローラ１１２は、物理アドレスを指定することにより、１つのブロックを特定することができる。Ｎ個のブロックのうち＃１〜＃Ｍ（Ｍは２以上の整数）のＭ個のブロックだけがユーザに開放されており、残りの＃Ｍ＋１〜＃ＮのＮ−Ｍ個のブロックは、ユーザに開放されない予備ブロックである。【０００８】
コントローラ１１２は、読み出し・書き込み制御部１２１、First-In First-Out（ＦＩＦＯ）キュー１２２、及びアドレス変換テーブル１２３を含む。そして、コントローラ１１２は、ＣＰＵ１１１からの読み出し要求又は書き込み要求に応じて、ＮＡＮＤデバイス１１３からのデータの読み出し又はＮＡＮＤデバイス１１３へのデータの書き込みを制御する。【０００９】
アドレス変換テーブル１２３は、ソフトウェアが管理するファイルシステムの論理的なアドレス（論理アドレス）と、ＮＡＮＤデバイス１１３のブロックの物理アドレスとを、ブロック単位で対応付ける記憶領域である。アドレス変換テーブル１２３は、Ｍワードのテーブルであり、各ワードは、論理アドレス、書込済フラグ、及び物理アドレスを含む。【００１０】
アドレス変換テーブル１２３の物理アドレスは、ＮＡＮＤデバイス１１３内の対応するブロックを示すポインタとして用いられる。書込済フラグは、ＮＡＮＤデバイス１１３の初期設定後に、各物理アドレスが示すブロックに対する書き込みが行われたか否かを示す。【００１１】
ＦＩＦＯキュー１２２は、Ｎ−Ｍ個の予備ブロックに対応する物理アドレスを格納することができる。そして、ＦＩＦＯキュー１２２は、格納された物理アドレスを先に格納されたものから順番に出力する。【００１２】
読み出し・書き込み制御部１２１は、アドレス変換テーブル１２３を参照して、ＣＰＵ１１１からの読み出し要求又は書き込み要求が示す論理アドレスを物理アドレスに変換する。そして、読み出し・書き込み制御部１２１は、得られた物理アドレスのデータの読み出し又は得られた物理アドレスへのデータの書き込みを制御する。【００１３】
また、読み出し・書き込み制御部１２１は、ＦＩＦＯキュー１２２に予備ブロックの物理アドレスを格納する制御と、ＦＩＦＯキュー１２２から先頭の物理アドレスを取り出す制御とを行う。【００１４】
図２は、図１のＮＡＮＤデバイス１１３の初期設定後の状態を示している。初期設定により、ＮＡＮＤデバイス１１３の全ブロックの内容（データ）が消去される。アドレス変換テーブル１２３には、Ｌ１〜ＬＭの論理アドレスに対応付けて、ユーザに開放されているＭ個のブロックに対応するＰ１〜ＰＭの物理アドレスが設定されている。そして、各物理アドレスの書込済フラグは、未書込状態（ＯＦＦ）に設定されている。また、ＦＩＦＯキュー１２２には、Ｎ−Ｍ個の予備ブロックに対応するＰＭ＋１〜ＰＮの物理アドレスが格納されている。【００１５】
図３及び図４は、コントローラ１１２がＣＰＵ１１１から、論理アドレスＬ４に対する書き込み要求を受信した場合の書き込み制御の第１の例を示している。この書き込み制御の手順は、以下の通りである。【００１６】
処理３０１：読み出し・書き込み制御部１２１は、アドレス変換テーブル１２３を参照して、書き込み要求が示す論理アドレスＬ４に対応する書込済フラグがＯＦＦであることを検知する。【００１７】
処理３０２：読み出し・書き込み制御部１２１は、アドレス変換テーブル１２３を参照して、論理アドレスＬ４に対応する物理アドレスがＰ４であることを検知する。【００１８】
処理３０３：読み出し・書き込み制御部１２１は、物理アドレスＰ４に対応するＮＡＮＤデバイス１１３のブロックに、書き込み要求が示す書き込みデータを書き込む。【００１９】
処理３０４：読み出し・書き込み制御部１２１は、アドレス変換テーブル１２３の論理アドレスＬ４に対応する書込済フラグを書込状態（ＯＮ）に更新する。【００２０】
図５及び図６は、コントローラ１１２がＣＰＵ１１１から、論理アドレスＬ４に対する書き込み要求を受信した場合の書き込み制御の第２の例を示している。この書き込み制御の手順は、以下の通りである。【００２１】
処理５０１：読み出し・書き込み制御部１２１は、アドレス変換テーブル１２３を参照して、書き込み要求が示す論理アドレスＬ４に対応する書込済フラグがＯＮであり、論理アドレスＬ４に対応する物理アドレスがＰ４であることを検知する。【００２２】
処理５０２：読み出し・書き込み制御部１２１は、ＦＩＦＯキュー１２２から先頭の物理アドレスＰＭ＋１を取り出す。【００２３】
処理５０３：読み出し・書き込み制御部１２１は、物理アドレスＰＭ＋１に対応するＮＡＮＤデバイス１１３の予備ブロックに、書き込み要求が示す書き込みデータを書き込む。【００２４】
処理５０４：読み出し・書き込み制御部１２１は、アドレス変換テーブル１２３の論理アドレスＬ４に対応する物理アドレスをＰＭ＋１に更新する。【００２５】
処理５０５：読み出し・書き込み制御部１２１は、物理アドレスＰ４に対応するＮＡＮＤデバイス１１３のブロックのデータを消去する。【００２６】
処理５０６：読み出し・書き込み制御部１２１は、物理アドレスＰ４をＦＩＦＯキュー１２２に格納する。【００２７】
このような書き込み制御によれば、ＦＩＦＯキュー１２２に格納された物理アドレスＰ４は、それ以降に発生するＮ−Ｍ回目の書き込み時に初めてＦＩＦＯキュー１２２から取り出されることになる。特定の論理アドレスに対して書き込み要求が集中した場合でも、Ｎ−Ｍ個の予備ブロックを含むＮ−Ｍ＋１個のブロックのローテーションで、各ブロックが使用される。このため、論理アドレスと物理アドレスとの対応関係が１対１に固定されている場合と比べて、同じ論理アドレスに対する書き込み可能回数がＮ−Ｍ＋１倍になったように見える。【００２８】
このようなＦＩＦＯキューを用いたウェアレベリング機構では、使用するブロックのローテーションにより各ブロックの書き込み回数を平準化して、ＮＡＮＤデバイスの寿命を延ばすことが可能になる。この場合、「ウェアレベリング」は、ブロックの書き込み回数を平準化してＮＡＮＤデバイスの寿命を延ばす技術を意味する。【００２９】
また、不揮発性半導体メモリに関してより効果的な平準化を行うメモリ制御方法も知られている（例えば、特許文献２を参照）。このメモリ制御方法では、メモリ制御部が、不揮発性半導体メモリの使用中の物理ブロックであるデータブロックと、待機中の物理ブロックである交替ブロックとを別々に管理する。そして、メモリ制御部は、物理ブロック毎の書き換え回数を管理し、書き換え回数が所定回数以上の交替ブロックと、未書き換え時間が所定時間より長いデータブロックとを交替させる。
【先行技術文献】
【特許文献】
【００３０】
【特許文献１】特開平７−７８４８５号公報
【特許文献２】特開２０１０−７９８６０号公報
【発明の概要】
【発明が解決しようとする課題】
【００３１】
上述した従来のＮＡＮＤデバイスの書き込み制御には、以下のような問題がある。
ＦＩＦＯキューを用いたウェアレベリング機構では、予備ブロックの書き込み回数に拘わらず、ＦＩＦＯキュー内で最も古い物理アドレスに対応する予備ブロックから順番に使用されるため、高速な書き込み制御が可能である。しかしながら、書き込み回数の多いブロックであっても、一旦ＦＩＦＯキューに格納されると必ず使用されるため、書き込み回数の多いブロックが頻繁にＦＩＦＯキューに格納される場合は、ウェアレベリング効果が低下する。【００３２】
一方、特許文献２のメモリ制御方法では、交替ブロックの書き換え回数の範囲毎にキューが設けられ、書き換え回数が所定回数以上の交替ブロックに、長時間書き換えが発生していないデータが書き込まれる。これにより、書き換え回数の多い交替ブロックを読み出し専用のブロックに変更することができ、より高いウェアレベリング効果が期待できる。【００３３】
しかしながら、このメモリ制御方法では、データが消去されて交替ブロックの候補となったブロックは、複数のキューのうち、そのブロックの書き換え回数に対応するキューに登録される。したがって、不揮発性半導体メモリに対する書き込み要求に基づきブロックのデータが消去されて交替ブロックの候補が発生する度に、書き換え回数を判定する処理が行われる。このため、書き込み要求に基づくデータ書き込みの処理速度が低下し、書き込み性能が劣化すると考えられる。【００３４】
なお、かかる問題は、ＮＡＮＤデバイスの書き込み制御に限らず、他の不揮発性記憶装置の書き込み制御においても生ずるものである。【００３５】
１つの側面において、本発明の目的は、複数のブロックを含む記憶装置において、各ブロックの書き込み回数を平準化する高性能な書き込み制御を行うことである。
【課題を解決するための手段】
【００３６】
１つの案では、情報処理装置は、複数のブロックを含む記憶装置と制御部とを含む。
制御部は、複数のブロックに対するデータの書き込みを制御する。そして、制御部は、データを格納する第１のブロックの第１の書き込み回数が、データを格納する第２のブロックの第２の書き込み回数よりも大きい場合、第１のブロックのデータを予備の第３のブロックへ移動させ、第１のブロックを予備のブロックに変更する。
【発明の効果】
【００３７】
実施形態の情報処理装置によれば、複数のブロックを含む記憶装置において、各ブロックの書き込み回数を平準化する高性能な書き込み制御を行うことができる。
【図面の簡単な説明】
【００３８】
【図１】従来の情報処理装置の構成図である。
【図２】ＮＡＮＤデバイスの初期設定後の状態を示す図である。
【図３】ＮＡＮＤデバイスへの書き込み要求に対する書き込み制御の第１の例を示す図（その１）である。
【図４】ＮＡＮＤデバイスへの書き込み要求に対する書き込み制御の第１の例を示す図（その２）である。
【図５】ＮＡＮＤデバイスへの書き込み要求に対する書き込み制御の第２の例を示す図（その１）である。
【図６】ＮＡＮＤデバイスへの書き込み要求に対する書き込み制御の第２の例を示す図（その２）である。
【図７】実施形態の情報処理装置の構成図である。
【図８】書き込み制御のフローチャートである。
【図９】実施形態の情報処理装置の第１の具体例を示す図である。
【図１０】記憶装置の初期設定後の状態を示す図である。
【図１１】書き込み制御の第１の具体例のフローチャート（その１）である。
【図１２】書き込み制御の第１の具体例のフローチャート（その２）である。
【図１３】データ移動制御のフローチャートである。
【図１４】記憶装置への書き込み要求に対する書き込み制御の第１の具体例における第１の例を示す図（その１）である。
【図１５】記憶装置への書き込み要求に対する書き込み制御の第１の具体例における第１の例を示す図（その２）である。
【図１６】記憶装置への書き込み要求に対する書き込み制御の第１の具体例における第２の例を示す図（その１）である。
【図１７】記憶装置への書き込み要求に対する書き込み制御の第１の具体例における第２の例を示す図（その２）である。
【図１８】データ移動要求に対する書き込み制御の第１の具体例における第１の例を示す図（その１）である。
【図１９】データ移動要求に対する書き込み制御の第１の具体例における第１の例を示す図（その２）である。
【図２０】データ移動要求に対する書き込み制御の第１の具体例における第２の例を示す図（その１）である。
【図２１】データ移動要求に対する書き込み制御の第１の具体例における第２の例を示す図（その２）である。
【図２２】消去要求に対する書き込み制御の第１の具体例を示す図（その１）である。
【図２３】消去要求に対する書き込み制御の第１の具体例を示す図（その２）である。
【図２４】実施形態の情報処理装置の第２の具体例を示す図である。
【図２５】書き込み制御の第２の具体例のフローチャート（その１）である。
【図２６】書き込み制御の第２の具体例のフローチャート（その２）である。
【図２７】書き込み制御の第２の具体例のフローチャート（その３）である。
【図２８】データ移動要求に対する書き込み制御の第２の具体例における第１の例を示す図（その１）である。
【図２９】データ移動要求に対する書き込み制御の第２の具体例における第１の例を示す図（その２）である。
【図３０】データ移動要求に対する書き込み制御の第２の具体例における第２の例を示す図（その１）である。
【図３１】データ移動要求に対する書き込み制御の第２の具体例における第２の例を示す図（その２）である。
【図３２】処理回路の構成図である。
【発明を実施するための形態】
【００３９】
以下、図面を参照しながら、実施形態を詳細に説明する。
図７は、実施形態の情報処理装置の構成例を示している。図７の情報処理装置７０１は、書き込み制御回路７１１と複数のブロックを含む記憶装置７１２とを含み、書き込み制御回路７１１は、制御部７２１を含む。
【００４０】
図８は、図７の制御部７２１によって実行される書き込み制御の例を示すフローチャートである。まず、制御部７２１は、記憶装置７１２に含まれる複数のブロックに対するデータの書き込みを制御する（ステップ８０１）。
【００４１】
それらのブロックのうちデータを格納する第１のブロックの第１の書き込み回数が、データを格納する第２のブロックの第２の書き込み回数よりも大きい場合、制御部７２１は、第１のブロックのデータを予備の第３のブロックへ移動させる（ステップ８０２）。そして、制御部７２１は、第１のブロックを予備のブロックに変更する（ステップ８０３）。
【００４２】
このような情報処理装置７０１によれば、複数のブロックを含む記憶装置において、各ブロックの書き込み回数を平準化する高性能な書き込み制御を行うことができる。
【００４３】
図９は、図７の情報処理装置７０１の第１の具体例を示している。図９の情報処理装置９０１は、ＣＰＵ９１１、コントローラ９１２、及び記憶装置９１３を含む。コントローラ９１２及び記憶装置９１３は、図７の制御部７２１及び記憶装置７１２にそれぞれ対応する。記憶装置９１３としては、ＮＡＮＤフラッシュメモリデバイス、ＮＯＲフラッシュメモリデバイス、磁気抵抗ランダムアクセスメモリ（ＭＲＡＭ）等の不揮発性記憶装置を用いることができる。
【００４４】
記憶装置９１３内の記憶領域は、＃１〜＃Ｎ（Ｎは２以上の整数）のＮ個のブロックに分割されており、それらのブロックには、Ｐ１〜ＰＮの物理アドレスが割り当てられている。したがって、コントローラ９１２は、物理アドレスを指定することにより、１つのブロックを特定することができる。Ｎ個のブロックのうち＃１〜＃Ｍ（Ｍは２以上の整数）のＭ個のブロックだけがユーザに開放されており、残りの＃Ｍ＋１〜＃ＮのＮ−Ｍ個のブロックは、ユーザに開放されない予備ブロックである。
【００４５】
コントローラ９１２は、読み出し・書き込み制御部９２１、データ移動制御部９２２、ＦＩＦＯキュー９２３、ＦＩＦＯキュー９２４、アドレス変換テーブル９２５、及び情報管理テーブル９２６を含む。そして、コントローラ９１２は、ＣＰＵ９１１からの読み出し要求又は書き込み要求に応じて、記憶装置９１３からのデータの読み出し又は記憶装置９１３へのデータの書き込みを制御する。
【００４６】
アドレス変換テーブル９２５は、論理アドレスと記憶装置９１３のブロックの物理アドレスとを、ブロック単位で対応付ける記憶領域である。アドレス変換テーブル９２５は、Ｍワードのテーブルであり、各ワードは、論理アドレス、書込済フラグ、及び物理アドレスを含む。
【００４７】
アドレス変換テーブル９２５の物理アドレスは、記憶装置９１３内の対応するブロックを示すポインタとして用いられる。書込済フラグは、記憶装置９１３の初期設定後に、各物理アドレスが示すブロックに対する書き込みが行われたか否かを示す。
【００４８】
情報管理テーブル９２６は、記憶装置９１３のブロックの物理アドレスと、そのブロックの書き込み回数を示すカウンタとを、ブロック単位で対応付ける記憶領域である。ブロックの書き込み回数としては、例えば、そのブロックのデータが消去された回数を用いることができる。
【００４９】
情報管理テーブル９２６は、Ｎワードのテーブルであり、予備ブロックも含めたＮ個のブロックの情報を格納する。各ワードは、物理アドレス、カウンタ、及び物理アドレスに対応付けられている論理アドレスを含む。予備ブロックの物理アドレスに対しては、便宜的に論理アドレスＬ０が割り当てられる。
【００５０】
ＦＩＦＯキュー９２３は、物理アドレスを格納する格納部であり、Ｌ個（Ｌは１以上Ｎ−Ｍ−１以下の整数）の予備ブロックに対応する物理アドレスを格納することができる。そして、ＦＩＦＯキュー９２３は、格納された物理アドレスを先に格納されたものから順番に出力する。
【００５１】
ＦＩＦＯキュー９２４は、物理アドレスを格納する格納部であり、Ｎ−Ｍ−Ｌ個の予備ブロックに対応する物理アドレスを格納することができる。そして、ＦＩＦＯキュー９２４は、格納された物理アドレスを先に格納されたものから順番に出力する。
【００５２】
読み出し・書き込み制御部９２１は、アドレス変換テーブル９２５を参照して、ＣＰＵ９１１からの読み出し要求又は書き込み要求が示す論理アドレスを物理アドレスに変換する。そして、読み出し・書き込み制御部９２１は、得られた物理アドレスのデータの読み出し又は得られた物理アドレスへのデータの書き込みを制御する。
【００５３】
読み出し・書き込み制御部９２１は、記憶装置９１３のブロックのデータを消去した場合、情報管理テーブル９２６の対応する物理アドレスのカウンタを、１だけインクリメントする。
【００５４】
読み出し・書き込み制御部９２１は、ＣＰＵ９１１から書き込み要求を受信した場合、ＦＩＦＯキュー９２３から物理アドレスを取り出し、ＦＩＦＯキュー９２３に別の物理アドレスを格納する制御を行う。読み出し・書き込み制御部９２１は、データ移動制御部９２２からデータ移動要求を受信した場合、ＦＩＦＯキュー９２４から物理アドレスを取り出し、ＦＩＦＯキュー９２４に別の物理アドレスを格納する制御を行う。
【００５５】
データ移動制御部９２２は、所定のタイミングで情報管理テーブル９２６を参照して、Ｌ１〜ＬＭの論理アドレスに対応する物理アドレスが示すＭ個のブロックのうち、カウンタが示す書き込み回数が比較的大きいブロックを特定する。書き込み回数が比較的大きいブロックとしては、例えば、書き込み回数が最も大きいブロックを用いることができる。そして、データ移動制御部９２２は、特定したブロックに割り当てられている論理アドレスを対象とするデータ移動要求を、読み出し・書き込み制御部９２１に対して発行する。
【００５６】
このようなコントローラ９１２によれば、ＣＰＵ９１１から書き込み要求を受信した場合、ＦＩＦＯキュー９２３が示す予備ブロックを使用してデータの書き込みが行われる。また、ＣＰＵ９１１から書き込み要求とは非同期に、書き込み回数が比較的大きいブロックのデータを別のブロックへ移動させて、移動元のブロックの物理アドレスをＦＩＦＯキュー９２４に格納することができる。
【００５７】
これにより、書き込み回数が比較的大きいブロックの使用頻度を低くして、書き込み回数を効果的に平準化することができる。また、書き込み要求に基づくデータ書き込み時に書き込み回数を判定する必要がないため、書き込み性能が劣化することはない。したがって、書き込み性能を維持しながらウェアレベリング効果を高める、高性能な書き込み制御を行うことができる。
【００５８】
図１０は、図９の記憶装置９１３の初期設定後の状態を示している。初期設定により、記憶装置９１３の全ブロックのデータが消去される。アドレス変換テーブル９２５には、Ｌ１〜ＬＭの論理アドレスに対応付けて、ユーザに開放されているＭ個のブロックに対応するＰ１〜ＰＭの物理アドレスが設定されている。そして、各物理アドレスの書込済フラグは、未書込状態（ＯＦＦ）に設定されている。
【００５９】
情報管理テーブル９２６には、Ｐ１〜ＰＭのＭ個の物理アドレスに対応付けてＬ１〜ＬＭの論理アドレスが設定されており、ＰＭ＋１〜ＰＮのＮ−Ｍ個の物理アドレスに対応付けて予備ブロックを示す論理アドレスＬ０が設定されている。全ブロックのデータが消去されたため、各物理アドレスのカウンタは１に設定されている。なお、この状態でもう一度記憶装置９１３の初期設定が行われると、各物理アドレスのカウンタは２に更新されることになる。
【００６０】
ＦＩＦＯキュー９２３には、Ｌ個の予備ブロックに対応するＰＭ＋１〜ＰＭ＋Ｌの物理アドレスが格納されている。ＦＩＦＯキュー９２４には、Ｎ−Ｍ−Ｌ個の予備ブロックに対応するＰＭ＋Ｌ＋１〜ＰＮの物理アドレスが格納されている。
【００６１】
図１１及び図１２は、図９の読み出し・書き込み制御部９２１による書き込み制御の例を示すフローチャートである。
【００６２】
読み出し・書き込み制御部９２１は、ＣＰＵ９１１からの書き込み要求又はデータ移動制御部９２２からのデータ移動要求を受信すると、受信した要求がいずれの要求であるかをチェックする（ステップ１１０１）。
【００６３】
受信した要求がデータ移動要求である場合（ステップ１１０１，ＹＥＳ）、読み出し・書き込み制御部９２１は、次に、アドレス変換テーブル９２５を参照する。そして、読み出し・書き込み制御部９２１は、データ移動要求が示す論理アドレスに対応する書込済フラグが書込状態（ＯＮ）であるか否かをチェックする（ステップ１１０２）。
【００６４】
書込済フラグがＯＮである場合（ステップ１１０２，ＹＥＳ）、読み出し・書き込み制御部９２１は、データ移動要求が示す論理アドレスに対応する物理アドレスが示すブロックからデータを読み出す（ステップ１１０３）。そして、読み出し・書き込み制御部９２１は、そのブロックのデータを消去する（ステップ１１０４）。
【００６５】
次に、読み出し・書き込み制御部９２１は、ＦＩＦＯキュー９２４から先頭の物理アドレスを取り出し（ステップ１１０５）、ステップ１１０３で読み出したデータを、取り出した物理アドレスが示すブロックに書き込む（ステップ１１０６）。これにより、データ移動要求が示す論理アドレスに対応するブロックのデータを、ＦＩＦＯキュー９２４から取り出した物理アドレスに対応する予備ブロックへ移動させることができる。そして、読み出し・書き込み制御部９２１は、データ移動要求が示す論理アドレスに対応する物理アドレスを、ＦＩＦＯキュー９２４に格納する（ステップ１１０７）。
【００６６】
次に、読み出し・書き込み制御部９２１は、情報管理テーブル９２６において、データ移動要求が示す論理アドレスに対応するカウンタを１だけインクリメントする（ステップ１１０８）。そして、読み出し・書き込み制御部９２１は、情報管理テーブル９２６において、ＦＩＦＯキュー９２４に格納した物理アドレスに対応する論理アドレスをＬ０に更新する。
【００６７】
次に、読み出し・書き込み制御部９２１は、アドレス変換テーブル９２５において、データ移動要求が示す論理アドレスに対応する物理アドレスを、ＦＩＦＯキュー９２４から取り出した物理アドレスに更新する（ステップ１１０９）。
【００６８】
そして、読み出し・書き込み制御部９２１は、情報管理テーブル９２６において、ＦＩＦＯキュー９２４から取り出した物理アドレスに対応する論理アドレスを、データ移動要求が示す論理アドレスに更新する（ステップ１１１０）。
【００６９】
一方、書込済フラグがＯＦＦである場合（ステップ１１０２，ＮＯ）、読み出し・書き込み制御部９２１は、ＦＩＦＯキュー９２４から先頭の物理アドレスを取り出し（ステップ１１１１）、データ移動要求が示す論理アドレスに対応する物理アドレスを、ＦＩＦＯキュー９２４に格納する（ステップ１１１２）。
【００７０】
次に、読み出し・書き込み制御部９２１は、情報管理テーブル９２６において、ＦＩＦＯキュー９２４に格納した物理アドレスに対応する論理アドレスをＬ０に更新し（ステップ１１１３）、ステップ１１０９以降の処理を行う。
【００７１】
受信した要求が書き込み要求である場合（ステップ１１０１，ＮＯ）、読み出し・書き込み制御部９２１は、次に、アドレス変換テーブル９２５を参照する。そして、読み出し・書き込み制御部９２１は、書き込み要求が示す論理アドレスに対応する書込済フラグがＯＮであるか否かをチェックする（ステップ１２０１）。
【００７２】
書込済フラグがＯＮである場合（ステップ１２０１，ＹＥＳ）、読み出し・書き込み制御部９２１は、書き込み要求が示す論理アドレスに対応する物理アドレスが示すブロックのデータを消去する（ステップ１２０２）。
【００７３】
次に、読み出し・書き込み制御部９２１は、ＦＩＦＯキュー９２３から先頭の物理アドレスを取り出し（ステップ１２０３）、書き込み要求が示す書き込みデータを、取り出した物理アドレスが示すブロックに書き込む（ステップ１２０４）。そして、読み出し・書き込み制御部９２１は、書き込み要求が示す論理アドレスに対応する物理アドレスを、ＦＩＦＯキュー９２３に格納する（ステップ１２０５）。
【００７４】
次に、読み出し・書き込み制御部９２１は、情報管理テーブル９２６において、書き込み要求が示す論理アドレスに対応するカウンタを１だけインクリメントする（ステップ１２０６）。そして、読み出し・書き込み制御部９２１は、情報管理テーブル９２６において、ＦＩＦＯキュー９２３に格納した物理アドレスに対応する論理アドレスをＬ０に更新する。
【００７５】
次に、読み出し・書き込み制御部９２１は、アドレス変換テーブル９２５において、書き込み要求が示す論理アドレスに対応する物理アドレスを、ＦＩＦＯキュー９２３から取り出した物理アドレスに更新する（ステップ１２０７）。
【００７６】
そして、読み出し・書き込み制御部９２１は、情報管理テーブル９２６において、ＦＩＦＯキュー９２３から取り出した物理アドレスに対応する論理アドレスを、書き込み要求が示す論理アドレスに更新する（ステップ１２０８）。
【００７７】
一方、書込済フラグがＯＦＦである場合（ステップ１２０１，ＮＯ）、読み出し・書き込み制御部９２１は、書き込み要求が示す論理アドレスに対応する物理アドレスが示すブロックに、書き込み要求が示す書き込みデータを書き込む（ステップ１２０９）。そして、読み出し・書き込み制御部９２１は、アドレス変換テーブル９２５において、書き込み要求が示す論理アドレスに対応する書込済フラグをＯＮに変更する（ステップ１２１０）。
【００７８】
図１３は、図９のデータ移動制御部９２２によるデータ移動制御の例を示すフローチャートである。データ移動制御部９２２は、所定のタイミングでデータ移動制御を開始する。所定のタイミングとしては、例えば、以下のようなタイミングを用いることができる。
（１）定期的
（２）ＣＰＵ９１１からの読み出し要求又は書き込み要求の制御が行われていない空き時間
（３）ＣＰＵ９１１からの書き込み要求が所定回数発生したとき
【００７９】
まず、データ移動制御部９２２は、論理アドレスの番号を表す変数ｎを１に設定し（ステップ１３０１）、アドレス変換テーブル９２５を参照して、論理アドレスＬｎに対応する物理アドレスを読み出す（ステップ１３０２）。
【００８０】
次に、データ移動制御部９２２は、情報管理テーブル９２６を参照して、読み出した物理アドレスに対応するカウンタの値を読み出し、変数Ｃ１に設定する（ステップ１３０３）。
【００８１】
次に、データ移動制御部９２２は、ｎが１であるか否かをチェックする（ステップ１３０４）。ｎが１である場合（ステップ１３０４，ＹＥＳ）、データ移動制御部９２２は、変数Ｃ１の値を変数Ｃ２に設定し（ステップ１３０６）、物理アドレスＬｎを変数Ｘに設定する（ステップ１３０７）。
【００８２】
次に、データ移動制御部９２２は、ｎがＭであるか否かをチェックし（ステップ１３０８）、ｎがＭでない場合（ステップ１３０８，ＮＯ）、ｎを１だけインクリメントして（ステップ１３１０）、ステップ１３０２以降の処理を繰り返す。
【００８３】
ｎが１でない場合（ステップ１３０４，ＮＯ）、データ移動制御部９２２は、Ｃ１とＣ２を比較する（ステップ１３０５）。Ｃ１がＣ２より大きい場合（ステップ１３０５，ＹＥＳ）、データ移動制御部９２２は、ステップ１３０６以降の処理を行う。これにより、Ｃ２がより大きなカウンタ値に更新され、Ｘが更新後のカウンタ値に対応する論理アドレスに更新される。一方、Ｃ１がＣ２以下である場合（ステップ１３０５，ＮＯ）、データ移動制御部９２２は、ステップ１３０８以降の処理を行う。
【００８４】
そして、ｎがＭに達した場合（ステップ１３０８，ＹＥＳ）、論理アドレスＸに対するデータ移動要求を、読み出し・書き込み制御部９２１に対して発行する（ステップ１３０９）。
【００８５】
このようなデータ移動制御によれば、所定のタイミングで、カウンタが示す書き込み回数が最も大きいブロックのデータを予備ブロックへ移動させて、移動元のブロックを予備ブロックに変更することが可能になる。したがって、書き込み回数が最も大きいブロックの使用頻度を低くすることができる。
【００８６】
なお、図１３のデータ移動制御によれば、全ブロックのカウンタが同じ値である場合、ＸがＬ１のままで更新されないため、論理アドレスＬ１に対するデータ移動要求が発行される。しかし、この場合は全ブロックの使用頻度が同じであるため、データ移動制御部９２２は、Ｌ１以外の論理アドレスに対するデータ移動要求を発行してもよい。
【００８７】
図１４及び図１５は、コントローラ９１２がＣＰＵ９１１から、論理アドレスＬ４に対する書き込み要求を受信した場合の書き込み制御の第１の例を示している。この書き込み制御の手順は、以下の通りである。
【００８８】
処理１４０１：読み出し・書き込み制御部９２１は、アドレス変換テーブル９２５を参照して、書き込み要求が示す論理アドレスＬ４に対応する書込済フラグがＯＦＦであることを検知する。
【００８９】
処理１４０２：読み出し・書き込み制御部９２１は、アドレス変換テーブル９２５を参照して、論理アドレスＬ４に対応する物理アドレスがＰ４であることを検知する。
【００９０】
処理１４０３：読み出し・書き込み制御部９２１は、物理アドレスＰ４に対応する記憶装置９１３のブロックに、書き込み要求が示す書き込みデータを書き込む。
【００９１】
処理１４０４：読み出し・書き込み制御部９２１は、アドレス変換テーブル９２５の論理アドレスＬ４に対応する書込済フラグをＯＮに更新する。
【００９２】
図１６及び図１７は、コントローラ９１２がＣＰＵ９１１から、論理アドレスＬ４に対する書き込み要求を受信した場合の書き込み制御の第２の例を示している。この書き込み制御の手順は、以下の通りである。
【００９３】
処理１６０１：読み出し・書き込み制御部９２１は、アドレス変換テーブル９２５を参照して、書き込み要求が示す論理アドレスＬ４に対応する書込済フラグがＯＮであることを検知する。
【００９４】
処理１６０２：読み出し・書き込み制御部９２１は、アドレス変換テーブル９２５を参照して、書き込み要求が示す論理アドレスＬ４に対応する物理アドレスがＰ４であることを検知する。
【００９５】
処理１６０３：読み出し・書き込み制御部９２１は、物理アドレスＰ４に対応する記憶装置９１３のブロックのデータを消去する。
【００９６】
処理１６０４：読み出し・書き込み制御部９２１は、ＦＩＦＯキュー９２３から先頭の物理アドレスＰＭ＋１を取り出す。
【００９７】
処理１６０５：読み出し・書き込み制御部９２１は、物理アドレスＰＭ＋１に対応する記憶装置９１３の予備ブロックに、書き込み要求が示す書き込みデータを書き込む。
【００９８】
処理１６０６：読み出し・書き込み制御部９２１は、物理アドレスＰ４をＦＩＦＯキュー９２３に格納する。
【００９９】
処理１６０７：読み出し・書き込み制御部９２１は、情報管理テーブル９２６の物理アドレスＰ４に対応するカウンタの値を１だけインクリメントする。これにより、カウンタの値は、１から２に更新される。
【０１００】
処理１６０８：読み出し・書き込み制御部９２１は、情報管理テーブル９２６の物理アドレスＰ４に対応する論理アドレスをＬ０に更新する。
【０１０１】
処理１６０９：読み出し・書き込み制御部９２１は、アドレス変換テーブル９２５の論理アドレスＬ４に対応する物理アドレスをＰＭ＋１に更新する。
【０１０２】
処理１６１０：読み出し・書き込み制御部９２１は、情報管理テーブル９２６の物理アドレスＰＭ＋１に対応する論理アドレスをＬ４に更新する。
【０１０３】
図１８及び図１９は、コントローラ９１２がデータ移動制御部９２２から、論理アドレスＬ４に対するデータ移動要求を受信した場合の書き込み制御の第１の例を示している。この例では、情報管理テーブル９２６の全ブロックのカウンタの値が１である状態で、論理アドレスＬ１に対するデータ移動要求の代わりに、論理アドレスＬ４に対するデータ移動要求が発行されている。この書き込み制御の手順は、以下の通りである。
【０１０４】
処理１８０１：読み出し・書き込み制御部９２１は、アドレス変換テーブル９２５を参照して、データ移動要求が示す論理アドレスＬ４に対応する書込済フラグがＯＮであることを検知する。
【０１０５】
処理１８０２：読み出し・書き込み制御部９２１は、アドレス変換テーブル９２５を参照して、データ移動要求が示す論理アドレスＬ４に対応する物理アドレスがＰ４であることを検知する。
【０１０６】
処理１８０３：読み出し・書き込み制御部９２１は、物理アドレスＰ４に対応する記憶装置９１３のブロックからデータを読み出す。
【０１０７】
処理１８０４：読み出し・書き込み制御部９２１は、物理アドレスＰ４に対応する記憶装置９１３のブロックのデータを消去する。
【０１０８】
処理１８０５：読み出し・書き込み制御部９２１は、ＦＩＦＯキュー９２４から先頭の物理アドレスＰＭ＋Ｌ＋１を取り出す。
【０１０９】
処理１８０６：読み出し・書き込み制御部９２１は、物理アドレスＰＭ＋Ｌ＋１に対応する記憶装置９１３の予備ブロックに、物理アドレスＰ４に対応するブロックから読み出したデータを書き込む。
【０１１０】
処理１８０７：読み出し・書き込み制御部９２１は、物理アドレスＰ４をＦＩＦＯキュー９２４に格納する。
【０１１１】
処理１８０８：読み出し・書き込み制御部９２１は、情報管理テーブル９２６の物理アドレスＰ４に対応するカウンタの値を１だけインクリメントする。これにより、カウンタの値は、１から２に更新される。
【０１１２】
処理１８０９：読み出し・書き込み制御部９２１は、情報管理テーブル９２６の物理アドレスＰ４に対応する論理アドレスをＬ０に更新する。
【０１１３】
処理１８１０：読み出し・書き込み制御部９２１は、アドレス変換テーブル９２５の論理アドレスＬ４に対応する物理アドレスをＰＭ＋Ｌ＋１に更新する。
【０１１４】
処理１８１１：読み出し・書き込み制御部９２１は、情報管理テーブル９２６の物理アドレスＰＭ＋Ｌ＋１に対応する論理アドレスをＬ４に更新する。
【０１１５】
図２０及び図２１は、コントローラ９１２がデータ移動制御部９２２から、論理アドレスＬ４に対するデータ移動要求を受信した場合の書き込み制御の第２の例を示している。この書き込み制御の手順は、以下の通りである。
【０１１６】
処理２００１：読み出し・書き込み制御部９２１は、アドレス変換テーブル９２５を参照して、データ移動要求が示す論理アドレスＬ４に対応する書込済フラグがＯＦＦであることを検知する。
【０１１７】
処理２００２：読み出し・書き込み制御部９２１は、アドレス変換テーブル９２５を参照して、データ移動要求が示す論理アドレスＬ４に対応する物理アドレスがＰ４であることを検知する。この場合、物理アドレスＰ４に対応するブロックにはデータが存在しないため、読み出し・書き込み制御部９２１は、そのブロックのデータの読み出し及び消去を行わない。
【０１１８】
処理２００３：読み出し・書き込み制御部９２１は、ＦＩＦＯキュー９２４から先頭の物理アドレスＰＭ＋Ｌ＋１を取り出す。
【０１１９】
処理２００４：読み出し・書き込み制御部９２１は、物理アドレスＰ４をＦＩＦＯキュー９２４に格納する。
【０１２０】
処理２００５：読み出し・書き込み制御部９２１は、情報管理テーブル９２６の物理アドレスＰ４に対応する論理アドレスをＬ０に更新する。
【０１２１】
処理２００６：読み出し・書き込み制御部９２１は、アドレス変換テーブル９２５の論理アドレスＬ４に対応する物理アドレスをＰＭ＋Ｌ＋１に更新する。
【０１２２】
処理２００７：読み出し・書き込み制御部９２１は、情報管理テーブル９２６の物理アドレスＰＭ＋Ｌ＋１に対応する論理アドレスをＬ４に更新する。
【０１２３】
ところで、ＣＰＵ９１１は、読み出し要求及び書き込み要求以外に、ブロックのデータを消去する消去要求をコントローラ９１２に対して発行することもできる。
【０１２４】
図２２及び図２３は、コントローラ９１２がＣＰＵ９１１から、論理アドレスＬ４に対する消去要求を受信した場合の書き込み制御の例を示している。この書き込み制御の手順は、以下の通りである。
【０１２５】
処理２２０１：読み出し・書き込み制御部９２１は、アドレス変換テーブル９２５を参照して、消去要求が示す論理アドレスＬ４に対応する書込済フラグがＯＮであることを検知する。
【０１２６】
処理２２０２：読み出し・書き込み制御部９２１は、アドレス変換テーブル９２５を参照して、消去要求が示す論理アドレスＬ４に対応する物理アドレスがＰ４であることを検知する。
【０１２７】
処理２２０３：読み出し・書き込み制御部９２１は、物理アドレスＰ４に対応する記憶装置９１３のブロックのデータを消去する。
【０１２８】
処理２２０４：読み出し・書き込み制御部９２１は、ＦＩＦＯキュー９２３から先頭の物理アドレスＰＭ＋１を取り出す。
【０１２９】
処理２２０５：読み出し・書き込み制御部９２１は、物理アドレスＰ４をＦＩＦＯキュー９２３に格納する。
【０１３０】
処理２２０６：読み出し・書き込み制御部９２１は、情報管理テーブル９２６の物理アドレスＰ４に対応するカウンタの値を１だけインクリメントする。これにより、カウンタの値は、１から２に更新される。
【０１３１】
処理２２０７：読み出し・書き込み制御部９２１は、情報管理テーブル９２６の物理アドレスＰ４に対応する論理アドレスをＬ０に更新する。
【０１３２】
処理２２０８：読み出し・書き込み制御部９２１は、アドレス変換テーブル９２５の論理アドレスＬ４に対応する物理アドレスをＰＭ＋１に更新する。
【０１３３】
処理２２０９：読み出し・書き込み制御部９２１は、アドレス変換テーブル９２５の論理アドレスＬ４に対応する書込済フラグをＯＦＦに更新する。
【０１３４】
処理２２１０：読み出し・書き込み制御部９２１は、情報管理テーブル９２６の物理アドレスＰＭ＋１に対応する論理アドレスをＬ４に更新する。
【０１３５】
図９の情報処理装置９０１における書き込み制御によれば、データ移動制御部９２２からのデータ移動要求に基づき予備ブロックに変更された書き込み回数の大きなブロックの物理アドレスは、常にＦＩＦＯキュー９２４に格納される。一方、ＣＰＵ９１１からの書き込み要求に基づく書き込み先としては、常にＦＩＦＯキュー９２３内の物理アドレスが示す予備ブロックが使用される。このため、書き込み回数の大きな予備ブロックが書き込み要求に基づく書き込み先として使用される頻度が低くなる。
【０１３６】
所定のタイミングでデータ移動制御部９２２を動作させて、書き込み回数の大きなブロックに対するＣＰＵ９１１からの書き込みを抑止することで、各ブロックの書き込み回数を効果的に平準化することができる。また、書き込み要求に基づくデータ書き込み時に書き込み回数を判定する必要がないため、書き込み性能が劣化することはない。したがって、書き込み性能を維持しながらウェアレベリング効果を高めることができる。
【０１３７】
図２４は、図７の情報処理装置７０１の第２の具体例を示している。図２４の情報処理装置２４０１は、図９のコントローラ９１２をコントローラ２４１１に置き換えた構成を有する。コントローラ２４１１は、図７の制御部７２１に対応する。
【０１３８】
コントローラ２４１１は、読み出し・書き込み制御部２４２１、データ移動制御部９２２、ＦＩＦＯキュー９２３、ＦＩＦＯキュー９２４、ＦＩＦＯキュー２４２２、カウンタレジスタ２４２３、アドレス変換テーブル９２５、及び情報管理テーブル９２６を含む。
【０１３９】
図９の情報処理装置９０１とは異なり、ＦＩＦＯキュー９２４は、Ｋ個（Ｋは１以上Ｎ−Ｍ−Ｌ−１以下の整数）の予備ブロックに対応する物理アドレスを格納することができる。
【０１４０】
ＦＩＦＯキュー２４２２は、物理アドレスを格納する格納部であり、Ｎ−Ｍ−Ｌ−Ｋ個の予備ブロックに対応する物理アドレスを格納することができる。そして、ＦＩＦＯキュー２４２２は、格納された物理アドレスを先に格納されたものから順番に出力する。
【０１４１】
カウンタレジスタ２４２３は、情報管理テーブル９２６において、データ移動制御部９２２からのデータ移動要求に基づき更新されたカウンタの最大値を格納する。
【０１４２】
読み出し・書き込み制御部２４２１は、アドレス変換テーブル９２５を参照して、ＣＰＵ９１１からの読み出し要求又は書き込み要求が示す論理アドレスを物理アドレスに変換する。そして、読み出し・書き込み制御部２４２１は、得られた物理アドレスのデータの読み出し又は得られた物理アドレスへのデータの書き込みを制御する。
【０１４３】
読み出し・書き込み制御部２４２１は、記憶装置９１３のブロックのデータを消去した場合、情報管理テーブル９２６の対応する物理アドレスのカウンタを、１だけインクリメントする。データ移動制御部９２２からデータ移動要求を受信した場合で、更新後のカウンタの値がカウンタレジスタ２４２３に格納された値よりも大きい場合、読み出し・書き込み制御部２４２１は、カウンタレジスタ２４２３に格納された値を更新後のカウンタの値に更新する。
【０１４４】
読み出し・書き込み制御部２４２１は、ＣＰＵ９１１から書き込み要求を受信した場合、ＦＩＦＯキュー９２３から物理アドレスを取り出し、ＦＩＦＯキュー９２３に別の物理アドレスを格納する制御を行う。
【０１４５】
読み出し・書き込み制御部２４２１は、データ移動制御部９２２からデータ移動要求を受信した場合、ＦＩＦＯキュー９２４又はＦＩＦＯキュー２４２２から物理アドレスを取り出す制御を行う。このとき、読み出し・書き込み制御部２４２１は、情報管理テーブル９２６のカウンタの値とカウンタレジスタ２４２３の値とを比較した結果に基づいて、ＦＩＦＯキュー９２４又はＦＩＦＯキュー２４２２のいずれか一方を選択する。そして、読み出し・書き込み制御部２４２１は、選択したＦＩＦＯキューに別の物理アドレスを格納する制御を行う。
【０１４６】
データ移動制御部９２２の動作は、図９の情報処理装置９０１の場合と同様である。
【０１４７】
図２５乃至図２７は、図２４の読み出し・書き込み制御部２４２１による書き込み制御の例を示すフローチャートである。
【０１４８】
読み出し・書き込み制御部２４２１は、ＣＰＵ９１１からの書き込み要求又はデータ移動制御部９２２からのデータ移動要求を受信すると、受信した要求がいずれの要求であるかをチェックする（ステップ２５０１）。
【０１４９】
受信した要求がデータ移動要求である場合（ステップ２５０１，ＹＥＳ）、読み出し・書き込み制御部２４２１は、次に、アドレス変換テーブル９２５を参照する。そして、読み出し・書き込み制御部２４２１は、データ移動要求が示す論理アドレスに対応する書込済フラグがＯＮであるか否かをチェックする（ステップ２５０２）。
【０１５０】
書込済フラグがＯＮである場合（ステップ２５０２，ＹＥＳ）、読み出し・書き込み制御部２４２１は、データ移動要求が示す論理アドレスに対応する物理アドレスが示すブロックからデータを読み出す（ステップ２５０３）。そして、読み出し・書き込み制御部２４２１は、そのブロックのデータを消去し（ステップ２５０４）、情報管理テーブル９２６において、消去したブロックの物理アドレスに対応するカウンタを１だけインクリメントする（ステップ２５０５）。
【０１５１】
次に、読み出し・書き込み制御部２４２１は、インクリメントしたカウンタの値と、カウンタレジスタ２４２３の値とを比較する（ステップ２５０６）。
【０１５２】
インクリメントしたカウンタの値がカウンタレジスタ２４２３の値より大きい場合（ステップ２５０６，ＹＥＳ）、読み出し・書き込み制御部２４２１は、ＦＩＦＯキュー２４２２から先頭の物理アドレスを取り出す（ステップ２５０７）。次に、読み出し・書き込み制御部２４２１は、ステップ２５０３で読み出したデータを、取り出した物理アドレスが示すブロックに書き込む（ステップ２５０８）。これにより、データ移動要求が示す論理アドレスに対応するブロックのデータを、ＦＩＦＯキュー２４２２から取り出した物理アドレスに対応する予備ブロックへ移動させることができる。
【０１５３】
そして、読み出し・書き込み制御部２４２１は、データ移動要求が示す論理アドレスに対応する物理アドレスを、ＦＩＦＯキュー２４２２に格納する（ステップ２５０９）。
【０１５４】
次に、読み出し・書き込み制御部２４２１は、カウンタレジスタ２４２３の値をインクリメントしたカウンタの値に更新する（ステップ２５１０）。そして、読み出し・書き込み制御部２４２１は、情報管理テーブル９２６において、ＦＩＦＯキュー２４２２に格納した物理アドレスに対応する論理アドレスをＬ０に更新する（ステップ２５１１）。
【０１５５】
次に、読み出し・書き込み制御部２４２１は、アドレス変換テーブル９２５において、データ移動要求が示す論理アドレスに対応する物理アドレスを、ＦＩＦＯキュー２４２２から取り出した物理アドレスに更新する（ステップ２５１２）。
【０１５６】
そして、読み出し・書き込み制御部２４２１は、情報管理テーブル９２６において、ＦＩＦＯキュー２４２２から取り出した物理アドレスに対応する論理アドレスを、データ移動要求が示す論理アドレスに更新する（ステップ２５１３）。
【０１５７】
一方、インクリメントしたカウンタの値がカウンタレジスタ２４２３の値以下である場合（ステップ２５０６，ＮＯ）、読み出し・書き込み制御部２４２１は、ＦＩＦＯキュー９２４から先頭の物理アドレスを取り出す（ステップ２５１４）。次に、読み出し・書き込み制御部２４２１は、ステップ２５０３で読み出したデータを、取り出した物理アドレスが示すブロックに書き込む（ステップ２５１５）。これにより、データ移動要求が示す論理アドレスに対応するブロックのデータを、ＦＩＦＯキュー９２４から取り出した物理アドレスに対応する予備ブロックへ移動させることができる。
【０１５８】
そして、読み出し・書き込み制御部２４２１は、データ移動要求が示す論理アドレスに対応する物理アドレスを、ＦＩＦＯキュー９２４に格納する（ステップ２５１６）。
【０１５９】
次に、読み出し・書き込み制御部２４２１は、情報管理テーブル９２６において、ＦＩＦＯキュー９２４に格納した物理アドレスに対応する論理アドレスをＬ０に更新する（ステップ２５１１）。
【０１６０】
次に、読み出し・書き込み制御部２４２１は、アドレス変換テーブル９２５において、データ移動要求が示す論理アドレスに対応する物理アドレスを、ＦＩＦＯキュー９２４から取り出した物理アドレスに更新する（ステップ２５１２）。
【０１６１】
そして、読み出し・書き込み制御部２４２１は、情報管理テーブル９２６において、ＦＩＦＯキュー９２４から取り出した物理アドレスに対応する論理アドレスを、データ移動要求が示す論理アドレスに更新する（ステップ２５１３）。
【０１６２】
書込済フラグがＯＦＦである場合（ステップ２５０２，ＮＯ）、読み出し・書き込み制御部２４２１は、アドレス変換テーブル９２５を参照して、データ移動要求が示す論理アドレスに対応する物理アドレスを取得する（ステップ２６０１）。そして、読み出し・書き込み制御部２４２１は、情報管理テーブル９２６の取得した物理アドレスに対応するカウンタの値と、カウンタレジスタ２４２３の値とを比較する。
【０１６３】
情報管理テーブル９２６のカウンタの値がカウンタレジスタ２４２３の値より大きい場合（ステップ２６０１，ＹＥＳ）、読み出し・書き込み制御部２４２１は、ＦＩＦＯキュー２４２２から先頭の物理アドレスを取り出す（ステップ２６０２）。そして、読み出し・書き込み制御部２４２１は、データ移動要求が示す論理アドレスに対応する物理アドレスを、ＦＩＦＯキュー２４２２に格納する（ステップ２６０３）。
【０１６４】
次に、読み出し・書き込み制御部２４２１は、情報管理テーブル９２６において、ＦＩＦＯキュー２４２２に格納した物理アドレスに対応する論理アドレスをＬ０に更新する（ステップ２６０４）。
【０１６５】
次に、読み出し・書き込み制御部２４２１は、アドレス変換テーブル９２５において、データ移動要求が示す論理アドレスに対応する物理アドレスを、ＦＩＦＯキュー２４２２から取り出した物理アドレスに更新する（ステップ２６０５）。
【０１６６】
そして、読み出し・書き込み制御部２４２１は、情報管理テーブル９２６において、ＦＩＦＯキュー２４２２から取り出した物理アドレスに対応する論理アドレスを、データ移動要求が示す論理アドレスに更新する（ステップ２６０６）。
【０１６７】
一方、情報管理テーブル９２６のカウンタの値がカウンタレジスタ２４２３の値以下である場合（ステップ２６０１，ＮＯ）、読み出し・書き込み制御部２４２１は、ＦＩＦＯキュー９２４から先頭の物理アドレスを取り出す（ステップ２６０７）。そして、読み出し・書き込み制御部２４２１は、データ移動要求が示す論理アドレスに対応する物理アドレスを、ＦＩＦＯキュー９２４に格納する（ステップ２６０８）。
【０１６８】
次に、読み出し・書き込み制御部２４２１は、情報管理テーブル９２６において、ＦＩＦＯキュー９２４に格納した物理アドレスに対応する論理アドレスをＬ０に更新する（ステップ２６０４）。
【０１６９】
次に、読み出し・書き込み制御部２４２１は、アドレス変換テーブル９２５において、データ移動要求が示す論理アドレスに対応する物理アドレスを、ＦＩＦＯキュー９２４から取り出した物理アドレスに更新する（ステップ２６０５）。
【０１７０】
そして、読み出し・書き込み制御部２４２１は、情報管理テーブル９２６において、ＦＩＦＯキュー９２４から取り出した物理アドレスに対応する論理アドレスを、データ移動要求が示す論理アドレスに更新する（ステップ２６０６）。
【０１７１】
受信した要求が書き込み要求である場合（ステップ２５０１，ＮＯ）、読み出し・書き込み制御部２４２１は、図２７の処理を行う。図２７のステップ２７０１〜ステップ２７１０の処理は、図１２のステップ１２０１〜ステップ１２１０の処理と同様である。
【０１７２】
図２８及び図２９は、コントローラ２４１１がデータ移動制御部９２２から、論理アドレスＬ４に対するデータ移動要求を受信した場合の書き込み制御の第１の例を示している。この例では、情報管理テーブル９２６の物理アドレスＰＮに対応するカウンタの値が５であり、ＰＮ以外のブロックのカウンタの値が１である状態で、論理アドレスＬ１に対するデータ移動要求の代わりに、論理アドレスＬ４に対するデータ移動要求が発行されている。この書き込み制御の手順は、以下の通りである。
【０１７３】
処理２８０１：読み出し・書き込み制御部２４２１は、アドレス変換テーブル９２５を参照して、データ移動要求が示す論理アドレスＬ４に対応する書込済フラグがＯＮであることを検知する。
【０１７４】
処理２８０２：読み出し・書き込み制御部２４２１は、アドレス変換テーブル９２５を参照して、データ移動要求が示す論理アドレスＬ４に対応する物理アドレスがＰ４であることを検知する。
【０１７５】
処理２８０３：読み出し・書き込み制御部２４２１は、物理アドレスＰ４に対応する記憶装置９１３のブロックからデータを読み出す。
【０１７６】
処理２８０４：読み出し・書き込み制御部２４２１は、物理アドレスＰ４に対応する記憶装置９１３のブロックのデータを消去する。
【０１７７】
処理２８０５：読み出し・書き込み制御部２４２１は、情報管理テーブル９２６の物理アドレスＰ４に対応するカウンタの値を１だけインクリメントする。これにより、カウンタの値は、１から２に更新される。
【０１７８】
処理２８０６：読み出し・書き込み制御部２４２１は、カウンタレジスタ２４２３を参照して、カウンタレジスタ２４２３の値が５であることを検知する。
【０１７９】
処理２８０７：読み出し・書き込み制御部２４２１は、更新後のカウンタの値２とカウンタレジスタ２４２３の値５とを比較し、更新後のカウンタの値２の方が小さいので、ＦＩＦＯキュー９２４を選択する。そして、読み出し・書き込み制御部２４２１は、ＦＩＦＯキュー９２４から先頭の物理アドレスＰＭ＋Ｌ＋１を取り出す。
【０１８０】
処理２８０８：読み出し・書き込み制御部２４２１は、物理アドレスＰＭ＋Ｌ＋１に対応する記憶装置９１３の予備ブロックに、物理アドレスＰ４に対応するブロックから読み出したデータを書き込む。
【０１８１】
処理２８０９：読み出し・書き込み制御部２４２１は、物理アドレスＰ４をＦＩＦＯキュー９２４に格納する。
【０１８２】
処理２８１０：読み出し・書き込み制御部２４２１は、情報管理テーブル９２６の物理アドレスＰ４に対応する論理アドレスをＬ０に更新する。
【０１８３】
処理２８１１：読み出し・書き込み制御部２４２１は、アドレス変換テーブル９２５の論理アドレスＬ４に対応する物理アドレスをＰＭ＋Ｌ＋１に更新する。
【０１８４】
処理２８１２：読み出し・書き込み制御部２４２１は、情報管理テーブル９２６の物理アドレスＰＭ＋Ｌ＋１に対応する論理アドレスをＬ４に更新する。
【０１８５】
図３０及び図３１は、コントローラ２４１１がデータ移動制御部９２２から、論理アドレスＬ４に対するデータ移動要求を受信した場合の書き込み制御の第２の例を示している。この例では、情報管理テーブル９２６の物理アドレスＰ４に対応するカウンタの値４が最大値である状態で、論理アドレスＬ４に対するデータ移動要求が発行されている。この書き込み制御の手順は、以下の通りである。
【０１８６】
処理３００１：読み出し・書き込み制御部２４２１は、アドレス変換テーブル９２５を参照して、データ移動要求が示す論理アドレスＬ４に対応する書込済フラグがＯＮであることを検知する。
【０１８７】
処理３００２：読み出し・書き込み制御部２４２１は、アドレス変換テーブル９２５を参照して、データ移動要求が示す論理アドレスＬ４に対応する物理アドレスがＰ４であることを検知する。
【０１８８】
処理３００３：読み出し・書き込み制御部２４２１は、物理アドレスＰ４に対応する記憶装置９１３のブロックからデータを読み出す。
【０１８９】
処理３００４：読み出し・書き込み制御部２４２１は、物理アドレスＰ４に対応する記憶装置９１３のブロックのデータを消去する。
【０１９０】
処理３００５：読み出し・書き込み制御部２４２１は、情報管理テーブル９２６の物理アドレスＰ４に対応するカウンタの値を１だけインクリメントする。これにより、カウンタの値は、４から５に更新される。
【０１９１】
処理３００６：読み出し・書き込み制御部２４２１は、カウンタレジスタ２４２３を参照して、カウンタレジスタ２４２３の値が２であることを検知する。
【０１９２】
処理３００７：読み出し・書き込み制御部２４２１は、更新後のカウンタの値５とカウンタレジスタ２４２３の値２とを比較し、更新後のカウンタの値５の方が大きいので、ＦＩＦＯキュー２４２２を選択する。そして、読み出し・書き込み制御部２４２１は、ＦＩＦＯキュー２４２２から先頭の物理アドレスＰＭ＋Ｌ＋Ｋ＋１を取り出す。
【０１９３】
処理３００８：読み出し・書き込み制御部２４２１は、物理アドレスＰＭ＋Ｌ＋Ｋ＋１に対応する記憶装置９１３の予備ブロックに、物理アドレスＰ４に対応するブロックから読み出したデータを書き込む。
【０１９４】
処理３００９：読み出し・書き込み制御部２４２１は、物理アドレスＰ４をＦＩＦＯキュー２４２２に格納する。
【０１９５】
処理３０１０：読み出し・書き込み制御部２４２１は、カウンタレジスタ２４２３の値を更新後のカウンタの値５に更新する。
【０１９６】
処理３０１１：読み出し・書き込み制御部２４２１は、情報管理テーブル９２６の物理アドレスＰ４に対応する論理アドレスをＬ０に更新する。
【０１９７】
処理３０１２：読み出し・書き込み制御部２４２１は、アドレス変換テーブル９２５の論理アドレスＬ４に対応する物理アドレスをＰＭ＋Ｌ＋Ｋ＋１に更新する。
【０１９８】
処理３０１３：読み出し・書き込み制御部２４２１は、情報管理テーブル９２６の物理アドレスＰＭ＋Ｌ＋Ｋ＋１に対応する論理アドレスをＬ４に更新する。
【０１９９】
図２４の情報処理装置２４０１における書き込み制御によれば、ＦＩＦＯキュー９２４に加えてＦＩＦＯキュー２４２２が設けられ、過去の書き込み回数の最大値を超えるブロックの物理アドレスがＦＩＦＯキュー２４２２に格納される。これにより、ＦＩＦＯキュー２４２２の物理アドレスが示すブロックの使用頻度を、ＦＩＦＯキュー９２４の物理アドレスが示すブロックの使用頻度よりも低くすることが可能になる。したがって、図９の情報処理装置９０１よりもウェアレベリング効果を高めることができる。
【０２００】
図７の情報処理装置７０１、図９の情報処理装置９０１、及び図２４の情報処理装置２４０１の構成は一例に過ぎず、情報処理装置の用途や条件に応じて一部の構成要素を省略又は変更してもよい。
【０２０１】
例えば、図９の読み出し・書き込み制御部９２１がデータ移動制御部９２２の機能を含んでいる場合、図９のデータ移動制御部９２２を省略することができる。同様に、図２４の読み出し・書き込み制御部２４２１がデータ移動制御部９２２の機能を含んでいる場合、図２４のデータ移動制御部９２２を省略することができる。また、図９及び図２４の情報管理テーブル９２６の情報をアドレス変換テーブル９２５に付加することが可能な場合、情報管理テーブル９２６を省略することができる。
【０２０２】
図２４のコントローラ２４１１に、さらに１つ以上のＦＩＦＯキューを追加してもよい。ＦＩＦＯキューを追加することで、ウェアレベリング効果をさらに高めることができる。
【０２０３】
図８、図１１乃至図１３、及び図２５乃至図２７に示したフローチャートは一例に過ぎず、情報処理装置の構成や条件に応じて一部の処理を省略又は変更してもよい。例えば、図１１のステップ１１０８〜ステップ１１１０の処理の順序は、如何なる順序であっても構わない。同様に、図１２のステップ１２０６〜ステップ１２０８の処理の順序は、如何なる順序であっても構わない。
【０２０４】
また、図２５のステップ２５１０〜ステップ２５１３の処理の順序は、如何なる順序であっても構わない。図２６のステップ２６０４〜ステップ２６０６の処理の順序は、如何なる順序であっても構わない。図２７のステップ２７０６〜ステップ２７０８の処理の順序は、如何なる順序であっても構わない。
【０２０５】
図１３のデータ移動制御において、書き込み回数が最も大きいブロックの論理アドレスに対するデータ移動要求を発行する代わりに、書き込み回数が所定のブロックよりも大きいブロックの論理アドレスに対するデータ移動要求を発行してもよい。
【０２０６】
図７の制御部７２１、図９のコントローラ９２１、及び図２４のコントローラ２４１１は、ハードウェア回路として実装することもでき、図３２に示すように、プログラムを実行する処理回路（コンピュータ）として実現することもできる。
【０２０７】
図３２の処理回路は、Micro-Processing Unit（ＭＰＵ）３２０１、メモリ３２０２、インタフェース３２０３、及びインタフェース３２０４を備える。これらの構成要素はバス３２０５により互いに接続されている。
【０２０８】
メモリ３２０２は、例えば、Read Only Memory（ＲＯＭ）、Random Access Memory（ＲＡＭ）、フラッシュメモリ等の半導体メモリであり、書き込み制御に用いられる書き込み制御プログラム及びデータを格納する。メモリ３２０２は、図９及び図２４のＦＩＦＯキュー９２３、ＦＩＦＯキュー９２４、ＦＩＦＯキュー２４２２、カウンタレジスタ２４２３、アドレス変換テーブル９２５、及び情報管理テーブル９２６として用いることもできる。
【０２０９】
ＭＰＵ３２０１（プロセッサ）は、例えば、メモリ３２０２を利用して書き込み制御プログラムを実行することにより、図９の読み出し・書き込み制御部９２１及びデータ移動制御部９２２として動作する。ＭＰＵ３２０１は、書き込み制御プログラムを実行することにより、図２４の読み出し・書き込み制御部２４２１及びデータ移動制御部９２２として動作することもできる。
【０２１０】
インタフェース３２０３は、図９及び図２４のＣＰＵ９１１と通信する通信インタフェースである。インタフェース３２０３は、ＣＰＵ９１１から読み出し要求、書き込み要求、消去要求等の指示を受信し、要求された読み出しデータ、処理結果等を含む応答をＣＰＵ９１１へ送信する。
【０２１１】
インタフェース３２０４は、図９及び図２４の記憶装置９１３と通信する通信インタフェースである。インタフェース３２０４は、読み出し要求、書き込み要求、消去要求等の指示を記憶装置９１３へ送信し、読み出しデータ、処理結果等を含む応答を記憶装置９１３から受信する。
【０２１２】
図３２の処理回路は、補助記憶装置又は可搬型記録媒体に格納された書き込み制御プログラムを、メモリ３２０２にロードして使用することもできる。
【０２１３】
補助記憶装置は、例えば、磁気ディスク装置、光ディスク装置、光磁気ディスク装置、テープ装置等である。この外部記憶装置は、ハードディスクドライブであってもよい。可搬型記録媒体は、例えば、メモリデバイス、フレキシブルディスク、光ディスク、光磁気ディスク等である。この可搬型記録媒体は、Compact Disk Read Only Memory（ＣＤ−ＲＯＭ）、Digital Versatile Disk（ＤＶＤ）、フラッシュメモリ、Universal Serial Bus（ＵＳＢ）メモリ等であってもよい。
【０２１４】
このように、書き込み制御に用いられる書き込み制御プログラム及びデータを格納するコンピュータ読み取り可能な記録媒体には、メモリ３２０２、補助記憶装置、及び可搬型記録媒体のような、物理的な（非一時的な）記録媒体が含まれる。
【０２１５】
開示の実施形態とその利点について詳しく説明したが、当業者は、特許請求の範囲に明確に記載した本発明の範囲から逸脱することなく、様々な変更、追加、省略をすることができるであろう。
【図１】
0005943153.tif 000002
【図２】
0005943153.tif 000003
【図３】
0005943153.tif 000004
【図４】
0005943153.tif 000005
【図５】
0005943153.tif 000006
【図６】
0005943153.tif 000007
【図７】
0005943153.tif 000008
【図８】
0005943153.tif 000009
【図９】
0005943153.tif 000010
【図１０】
0005943153.tif 000011
【図１１】
0005943153.tif 000012
【図１２】
0005943153.tif 000013
【図１３】
0005943153.tif 000014
【図１４】
0005943153.tif 000015
【図１５】
0005943153.tif 000016
【図１６】
0005943153.tif 000017
【図１７】
0005943153.tif 000018
【図１８】
0005943153.tif 000019
【図１９】
0005943153.tif 000020
【図２０】
0005943153.tif 000021
【図２１】
0005943153.tif 000022
【図２２】
0005943153.tif 000023
【図２３】
0005943153.tif 000024
【図２４】
0005943153.tif 000025
【図２５】
0005943153.tif 000026
【図２６】
0005943153.tif 000027
【図２７】
0005943153.tif 000028
【図２８】
0005943153.tif 000029
【図２９】
0005943153.tif 000030
【図３０】
0005943153.tif 000031
【図３１】
0005943153.tif 000032
【図３２】
0005943153.tif 000033