(57)【特許請求の範囲】
【請求項１】
複数の物理記憶領域を有する不揮発性メモリと、
前記不揮発性メモリに接続されたコントローラと、
を備え、
前記コントローラは、前記複数の物理記憶領域の中の複数の特定物理記憶領域の一部ずつの評価処理を、前記複数の特定物理記憶領域にわたって行うことにより、前記複数の特定物理記憶領域の夫々の劣化度を算出し、前記複数の特定物理記憶領域にわたる前記評価処理を繰り返し、前記算出された劣化度に基づいて、対応する物理記憶領域を利用するか否かを判定し、
前記コントローラは、ＩＯ要求により指定される論理アドレスを、前記複数の特定物理記憶領域の中の物理アドレスに対応付ける対応情報を記憶し、
前記評価処理において前記コントローラは、前記複数の特定物理記憶領域の中から、予め定められた物理記憶領域の順序に従って、記憶された物理記憶領域数の物理記憶領域を物理記憶領域群として選択し、前記物理記憶領域群の中に有効データを格納する物理記憶領域である有効領域がある場合、前記複数の特定物理記憶領域の中で前記物理記憶領域群の外の未書き込みの物理記憶領域を代替領域として選択し、前記有効領域内のデータを前記代替領域へコピーし、前記対応情報において前記有効領域に対応付けられている論理アドレスを、前記代替領域に対応付け、前記物理記憶領域群を消去し、前記物理記憶領域群へ予め定められた評価用データを書き込み、前記評価用データの書き込みから、記憶された放置時間の経過後、前記物理記憶領域群から前記評価用データを読み出し、前記物理記憶領域群の中の各物理記憶領域である指定領域の障害ビット数である放置後障害ビット数を、前記読み出された評価用データに基づいて測定し、前記放置後障害ビット数に基づいて前記指定領域の劣化度を算出し、
前記コントローラは、前記複数の特定物理記憶領域の中で有効データを格納する物理記憶領域を第１領域として選択し、前記複数の特定物理記憶領域の中で前記物理記憶領域群の外の未書き込みの物理記憶領域の中から、別の物理記憶領域の劣化度より低い劣化度を有する物理記憶領域を第２領域として選択し、前記第１領域内のデータを前記第２領域へコピーし、前記第１領域を消去し、前記対応情報において前記第１領域に対応付けられている論理アドレスを、前記第２領域に対応付ける、
記憶装置。
【請求項２】
複数の物理記憶領域を有する不揮発性メモリと、
前記不揮発性メモリに接続されたコントローラと、
を備え、
前記コントローラは、前記複数の物理記憶領域の中の複数の特定物理記憶領域の一部ずつの評価処理を、前記複数の特定物理記憶領域にわたって行うことにより、前記複数の特定物理記憶領域の夫々の劣化度を算出し、前記複数の特定物理記憶領域にわたる前記評価処理を繰り返し、前記算出された劣化度に基づいて、対応する物理記憶領域を利用するか否かを判定し、
前記コントローラは、ＩＯ要求により指定される論理アドレスを、前記複数の特定物理記憶領域の中の物理アドレスに対応付ける対応情報を記憶し、
前記評価処理において前記コントローラは、前記複数の特定物理記憶領域の中から、予め定められた物理記憶領域の順序に従って、記憶された物理記憶領域数の物理記憶領域を物理記憶領域群として選択し、前記物理記憶領域群の中に有効データを格納する物理記憶領域である有効領域がある場合、前記複数の特定物理記憶領域の中で前記物理記憶領域群の外の未書き込みの物理記憶領域を代替領域として選択し、前記有効領域内のデータを前記代替領域へコピーし、前記対応情報において前記有効領域に対応付けられている論理アドレスを、前記代替領域に対応付け、前記物理記憶領域群を消去し、前記物理記憶領域群へ予め定められた評価用データを書き込み、前記評価用データの書き込みから、記憶された放置時間の経過後、前記物理記憶領域群から前記評価用データを読み出し、前記物理記憶領域群の中の各物理記憶領域である指定領域の障害ビット数である放置後障害ビット数を、前記読み出された評価用データに基づいて測定し、前記放置後障害ビット数に基づいて前記指定領域の劣化度を算出し、
前記評価用データの書き込みの後、且つ前記放置時間の経過前、前記コントローラは、前記物理記憶領域群から前記評価用データを読み出し、前記放置時間の経過前の前記評価用データの読み出し結果に基づいて、前記指定領域の障害ビット数である記録後障害ビット数を測定し、前記放置後障害ビット数から前記記録後障害ビット数を減じた値を障害ビット増加量として算出し、前記障害ビット増加量に基づいて、前記指定領域の劣化度を算出する、
記憶装置。
【請求項３】
前記指定領域の劣化度は、前記指定領域の劣化を消去回数に換算した値であり、
前記コントローラは、前記障害ビット増加量と前記指定領域の劣化度との関係を示す関係情報を記憶し、前記関係情報に基づいて、前記障害ビット増加量を前記指定領域の劣化度に変換する、
請求項２に記載の記憶装置。
【請求項４】
複数の物理記憶領域を有する不揮発性メモリと、
前記不揮発性メモリに接続されたコントローラと、
を備え、
前記コントローラは、前記複数の物理記憶領域の中の複数の特定物理記憶領域の一部ずつの評価処理を、前記複数の特定物理記憶領域にわたって行うことにより、前記複数の特定物理記憶領域の夫々の劣化度を算出し、前記算出された劣化度に基づいて、対応する物理記憶領域を利用するか否かを判定し、
前記評価処理において前記コントローラは、予め定められた物理記憶領域の順序に従って、前記複数の特定物理記憶領域の一部を物理記憶領域群として選択し、前記物理記憶領域群内のデータを移動させ、前記物理記憶領域群を消去し、前記物理記憶領域群へ予め定められた評価用データを書き込み、前記評価用データの書き込みから、記憶された放置時間の経過後、前記物理記憶領域群から前記評価用データを読み出し、前記読み出された評価用データに基づいて、前記物理記憶領域群の中の各物理記憶領域である指定領域の劣化度を算出し、
前記物理記憶領域群の消去の後、且つ前記評価用データの書き込みの前、前記コントローラは、予め定められた固定データを前記物理記憶領域群へ書き込み、予め定められた待機時間の経過後に、前記物理記憶領域群を消去する、
記憶装置。
【請求項５】
複数の物理記憶領域を有する不揮発性メモリと、
前記不揮発性メモリに接続されたコントローラと、
を備え、
前記コントローラは、前記複数の物理記憶領域の中の複数の特定物理記憶領域の一部ずつの評価処理を、前記複数の特定物理記憶領域にわたって行うことにより、前記複数の特定物理記憶領域の夫々の劣化度を算出し、前記算出された劣化度に基づいて、対応する物理記憶領域を利用するか否かを判定し、
前記評価処理において前記コントローラは、予め定められた物理記憶領域の順序に従って、前記複数の特定物理記憶領域の一部を物理記憶領域群として選択し、前記物理記憶領域群内のデータを移動させ、前記物理記憶領域群を消去し、前記物理記憶領域群へ予め定められた評価用データを書き込み、前記評価用データの書き込みから、記憶された放置時間の経過後、前記物理記憶領域群から前記評価用データを読み出し、前記読み出された評価用データに基づいて、前記物理記憶領域群の中の各物理記憶領域である指定領域の劣化度を算出し、
前記コントローラは、前記不揮発性メモリの温度を測定し、前記温度に基づいて前記放置時間を変更する、
記憶装置。
【請求項６】
前記コントローラは、リード要求により指定されたデータを前記不揮発性メモリから読み出す時に用いられる読出し電圧より高い読出し電圧を用いて、前記指定領域から前記評価用データを読み出す、
請求項１〜５の何れか一項に記載の記憶装置。
【請求項７】
前記評価用データの書き込みにより生じる放置後障害ビット数は、ランダムデータの書き込みにより生じる放置後障害ビット数より高い、
請求項１〜５の何れか一項に記載の記憶装置。
【請求項８】
複数の物理記憶領域を有する不揮発性メモリと、
前記不揮発性メモリに接続されたコントローラと、
を備え、
前記コントローラは、前記複数の物理記憶領域の中の複数の特定物理記憶領域の一部ずつの評価処理を、前記複数の特定物理記憶領域にわたって行うことにより、前記複数の特定物理記憶領域の夫々の劣化度を算出し、前記複数の特定物理記憶領域にわたる前記評価処理を繰り返し、前記算出された劣化度に基づいて、対応する物理記憶領域を利用するか否かを判定し、
前記コントローラは、ＩＯ要求により指定される論理アドレスを、前記複数の特定物理記憶領域の中の物理アドレスに対応付ける対応情報を記憶し、
前記評価処理において前記コントローラは、前記複数の特定物理記憶領域の中から、予め定められた物理記憶領域の順序に従って、記憶された物理記憶領域数の物理記憶領域を物理記憶領域群として選択し、前記物理記憶領域群の中に有効データを格納する物理記憶領域である有効領域がある場合、前記複数の特定物理記憶領域の中で前記物理記憶領域群の外の未書き込みの物理記憶領域を代替領域として選択し、前記有効領域内のデータを前記代替領域へコピーし、前記対応情報において前記有効領域に対応付けられている論理アドレスを、前記代替領域に対応付け、前記物理記憶領域群を消去し、前記物理記憶領域群へ予め定められた評価用データを書き込み、前記評価用データの書き込みから、記憶された放置時間の経過後、前記物理記憶領域群から前記評価用データを読み出し、前記物理記憶領域群の中の各物理記憶領域である指定領域の障害ビット数である放置後障害ビット数を、前記読み出された評価用データに基づいて測定し、前記放置後障害ビット数に基づいて前記指定領域の劣化度を算出し、
前記コントローラは、前記複数の特定物理記憶領域の中で有効データを格納する物理記憶領域の中から、別の物理記憶領域の劣化度より低い劣化度を有する物理記憶領域を第３領域として選択し、前記複数の特定物理記憶領域の中で前記物理記憶領域群の外の未書き込みの物理記憶領域を第４領域として選択し、前記第３領域内のデータを、前記第４領域へコピーし、前記第３領域を消去し、前記対応情報において前記第３領域に対応付けられている論理アドレスを、前記第４領域に対応付ける、
記憶装置。
【請求項９】
前記複数の特定物理記憶領域の夫々は、所定サイズの物理ブロックであり、
前記コントローラは、前記物理ブロック単位でデータを消去する、
請求項１〜８の何れか一項に記載の記憶装置。
【請求項１０】
複数の物理記憶領域を有する不揮発性メモリと、前記不揮発性メモリに接続されたコントローラとを有する記憶装置を制御するための記憶装置制御方法であって、
前記コントローラが、
前記複数の物理記憶領域の中の複数の特定物理記憶領域の一部ずつの評価処理を、前記複数の特定物理記憶領域にわたって行うことにより、前記複数の特定物理記憶領域の夫々の劣化度を算出し、
前記複数の特定物理記憶領域にわたる前記評価処理を繰り返し、
前記算出された劣化度に基づいて、対応する物理記憶領域を利用するか否かを判定し、
ＩＯ要求により指定される論理アドレスを、前記複数の特定物理記憶領域の中の物理アドレスに対応付ける対応情報を記憶する、
ことを備え、
前記評価処理は、
前記コントローラが、
前記複数の特定物理記憶領域の中から、予め定められた物理記憶領域の順序に従って、記憶された物理記憶領域数の物理記憶領域を物理記憶領域群として選択し、
前記物理記憶領域群の中に有効データを格納する物理記憶領域である有効領域がある場合、前記複数の特定物理記憶領域の中で前記物理記憶領域群の外の未書き込みの物理記憶領域を代替領域として選択し、
前記有効領域内のデータを前記代替領域へコピーし、
前記対応情報において前記有効領域に対応付けられている論理アドレスを、前記代替領域に対応付け、
前記物理記憶領域群を消去し、
前記物理記憶領域群へ予め定められた評価用データを書き込み、
前記評価用データの書き込みから、記憶された放置時間の経過後、
前記物理記憶領域群から前記評価用データを読み出し、
前記物理記憶領域群の中の各物理記憶領域である指定領域の障害ビット数である放置後障害ビット数を、前記読み出された評価用データに基づいて測定し、
前記放置後障害ビット数に基づいて前記指定領域の劣化度を算出する、
ことを有し、
前記コントローラが、前記複数の特定物理記憶領域の中で有効データを格納する物理記憶領域を第１領域として選択し、前記複数の特定物理記憶領域の中で前記物理記憶領域群の外の未書き込みの物理記憶領域の中から、別の物理記憶領域の劣化度より低い劣化度を有する物理記憶領域を第２領域として選択し、前記第１領域内のデータを前記第２領域へコピーし、前記第１領域を消去し、前記対応情報において前記第１領域に対応付けられている論理アドレスを、前記第２領域に対応付ける、
ことを更に備える、記憶装置制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不揮発性メモリを有する記憶装置に関する。
【背景技術】
【０００２】
ＦＭ（Ｆｌａｓｈ  Ｍｅｍｏｒｙ）等の不揮発性メモリを記憶媒体として利用した、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等の記憶装置が知られている。ＦＭを有する記憶装置は、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）と比べてランダムリード及びランダムライトの処理性能に優れており、システムのＩＯ（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）処理の高速化に用いられる。【０００３】
ＦＭを有する記憶装置の利用拡大は、ＦＭの低価格化に起因している。ＦＭの低価格化は、微細化の進展と多値化技術の利用によるものである。しかし、微細化の進展と多値化技術の利用は、ＦＭの品質を著しく低下させている。【０００４】
ＦＭは、消去（書き換え）により劣化するデバイスである。ＦＭの品質低下は、消去回数の上限値（書き換え可能回数）を減少させている。このため、ＦＭを有する記憶装置は、管理する複数の物理記憶領域の一部のみが劣化し利用不可となることを防ぐ目的で、消去回数の平準化を行うウェアレベリング機能を有している。また、ＦＭを有する記憶装置は、ＦＭの物理記憶領域に生じた障害ビット（記憶した値から変化したビット）を訂正するために、記録データにＥＣＣ（Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｎｇ  Ｃｏｄｅ）を付与し、読み出し時に訂正する機能を搭載している。さらに、データの記録から一定期間経過後に、記録されたデータを読み出し、ＥＣＣによるデータ訂正を行った後に、再度記録する、リフレッシュ機能を有する記憶装置も知られている。【０００５】
こうした高信頼化制御に利用される測定値の一つに、物理記憶領域の消去回数が挙げられる。ＦＭを有する記憶装置は、各物理記憶領域の消去回数をカウントして管理することで、各物理記憶領域の劣化を把握する。一般的にＦＭを有するＮＶＭ（Ｎｏｎ−ｖｏｌａｔｉｌｅ  Ｍｅｍｏｒｙ）モジュールは、消去回数の上限値を設定し、この上限値に到達した物理記憶領域を利用不可とすることで、ＮＶＭモジュールの信頼性を確保している。【０００６】
ＦＭのチップには先天的な品質ばらつきがあり、同じ消去回数のＦＭであっても劣化が異なる場合がある。また、物理記憶領域の累積的な利用環境によっても劣化が異なる。例えば、短い間隔で書き換えが行われた物理記憶領域は、長い間隔で書き換えが行われた物理記憶領域より劣化する。このため、物理記憶領域は利用時間を経るにつれ、後天的な劣化のばらつきが生じる。こうした劣化のばらつきの下でＮＶＭモジュールの十分な信頼性を確保するために、先天的に品質の悪いＦＭが、最も速く劣化する利用環境（ワーストケース）にて書き換えが繰り返されたことを想定して、そのＦＭの信頼性を維持できる消去回数の上限値が定められ、上限値以上の消去回数になるとそのＦＭの利用が禁止される。【０００７】
こうした上限値によるＦＭの消去回数の制限は、先天的な品質の良いＦＭや、ワーストケースよりも緩和された条件下で利用されたＦＭについても、利用を一律に制限してしまう。このため、制限された消去回数は、ＮＶＭモジュール全体にて本来実施可能な消去回数より低下する。【０００８】
また、記憶領域に特殊な書き込みを実施し、その書き込みにて生じた障害ビット数をカウントすることで劣化を推定する技術が知られている（例えば、特許文献１）。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】米国特許第８０８５５８６号明細書
【発明の概要】
【発明が解決しようとする課題】
【００１０】
特殊な書き込みにより劣化を推定する記憶装置は、劣化の推定中に、上位装置からアクセスされることができない。従って、劣化を推定する度に、記憶装置へのアクセスを停止することになる。
【課題を解決するための手段】
【００１１】
上記課題を解決するために、本発明の一態様である記憶装置は、複数の物理記憶領域を有する不揮発性メモリと、前記不揮発性メモリに接続されたコントローラと、を備える。前記コントローラは、前記複数の物理記憶領域の中の複数の特定物理記憶領域の一部ずつの評価処理を、前記複数の特定物理記憶領域にわたって行うことにより、前記複数の特定物理記憶領域の夫々の劣化度を算出し、前記算出された劣化度に基づいて、対応する物理記憶領域を利用するか否かを判定する。前記評価処理において前記コントローラは、予め定められた物理記憶領域の順序に従って、前記複数の特定物理記憶領域の一部を物理記憶領域群として選択し、前記物理記憶領域群内のデータを移動させ、前記物理記憶領域群を消去し、前記物理記憶領域群へ予め定められた評価用データを書き込み、前記評価用データの書き込みから、記憶された放置時間の経過後、前記物理記憶領域群から前記評価用データを読み出し、前記読み出された評価用データに基づいて、前記物理記憶領域群の中の各物理記憶領域である指定領域の劣化度を算出する。
【発明の効果】
【００１２】
本発明の一態様によれば、記憶装置を停止させずに不揮発性メモリ内の各物理記憶領域の劣化度を評価することができる。
【図面の簡単な説明】
【００１３】
【図１】図１は、ＦＭ内の物理記憶領域の劣化度のばらつきを模式的に示す。
【図２】図２は、本発明の実施例のコンピュータシステムの構成を示す。
【図３】図３は、ＮＶＭモジュール１１１の構成を示す。
【図４】図４は、ＦＭ２２０の構成を示す。
【図５】図５は、物理ブロック３０２の構成を示す。
【図６】図６は、物理ページ４０１の構成を示す。
【図７】図７は、論物変換テーブル７００を示す。
【図８】図８は、ブロック管理テーブル８００を示す。
【図９】図９は、劣化度定期評価処理を示す。
【図１０】図１０は、ブロック劣化度評価処理を示す。
【図１１】図１１は、評価時の読出し電圧の制御を示す。
【図１２】図１２は、劣化度ポイント推定テーブル１１００を示す。
【図１３】図１３は、管理画面を示す。
【発明を実施するための形態】
【００１４】
以下、本発明の実施例について図面を用いて説明する。
【００１５】
なお、以後の説明では「ａａａテーブル」、「ａａａリスト」、「ａａａＤＢ」、「ａａａキュー」等の表現にて本発明の情報を説明するが、これら情報はテーブル、リスト、ＤＢ、キュー、等のデータ構造以外で表現されていてもよい。そのため、データ構造に依存しないことを示すために「ａａａテーブル」、「ａａａリスト」、「ａａａＤＢ」、「ａａａキュー」等について「ａａａ情報」と呼ぶことがある。
【００１６】
さらに、各情報の内容を説明する際に、「識別情報」、「識別子」、「名」、「名前」、「ＩＤ」という表現を用いるが、これらについてはお互いに置換が可能である。
【００１７】
以後の説明では「プログラム」を主語として説明を行う場合があるが、プログラムはプロセッサによって実行されることで定められた処理をメモリ及び通信ポート（通信制御デバイス）を用いながら行うため、プロセッサを主語とした説明としてもよい。また、プログラムの一部または全ては専用ハードウェアによって実現されてもよい。
【００１８】
また、各種プログラムはプログラム配布サーバや、計算機が読み取り可能な記憶メディアによって記憶装置にインストールされてもよい。
【００１９】
本発明は、以下に説明する実施例に限定されるものではない。実施例では、不揮発性メモリとしてＮＡＮＤ型フラッシュメモリ等のＦＭを用いるが、本発明は、ＦＭのように書き換えにより劣化する不揮発性メモリに適用しうる。
【００２０】
（１）物理記憶領域の利用停止の制御方法
【００２１】
本実施例のＮＶＭモジュールは、消去回数によらず、障害ビットの増加傾向から推定される物理記憶領域の劣化度によってその物理記憶領域の利用を制限する。一般にＳＳＤ等のＮＶＭモジュールは、規定の消去回数（例えば１万回）に到達した物理記憶領域から利用を停止するという処理を実施する。本実施例のＮＶＭモジュールは、物理記憶領域の障害ビットの増加傾向に基づいて信頼性の維持が可能と判断された物理記憶領域については、その消去回数がいかなる値であっても利用を継続する。一方で、本実施例のＮＶＭモジュールは、消去回数が上限値に達していなくても、物理記憶領域の障害ビットの増加傾向に基づいて信頼性の維持が不可能と判断された物理記憶領域については、利用を停止する。
【００２２】
なお、本実施例は、物理記憶領域の消去の単位を物理ブロックとし、物理ブロックを単位として、劣化度の推定や利用の停止を行うが、所定数の物理ブロック等、他の物理記憶領域を単位として劣化度の推定や利用の停止を行っても良い。
【００２３】
以下、ＦＭの劣化度のばらつきについて説明する。
【００２４】
図１は、ＦＭ内の物理記憶領域の劣化度のばらつきを模式的に示す。ＦＭの劣化度のばらつきは、先天的な品質ばらつき（劣化のしやすさ）と、後天的な劣化のばらつきとを含む。この図において、横軸はデータをＦＭに記録した後の経過時間を示し、縦軸はＦＭに記録されるＥＣＣ  ＣＷ（Ｃｏｄｅ  Ｗｏｒｄ）中に含まれる障害ビット数を示す。この図は更に、ＥＣＣにより訂正可能な障害ビット数である訂正可能障害ビット数を示す。
【００２５】
ＦＭでは、データ記録後の経過時間が増加するにつれて、ＥＣＣ  ＣＷに含まれる障害ビット数が増加する。このため、ＦＭを用いた記憶装置は、データにＥＣＣを付与することにより、所定の訂正可能障害ビット数以下の障害ビット数を訂正可能である。ＮＶＭモジュールは、ＥＣＣにより検出される或る物理記憶領域の障害ビット数が予め定められた障害ビット数上限値以上になると、その物理記憶領域の利用を停止する。劣化度が高い物理記憶領域Ａと、物理記憶領域Ａより劣化度が低い物理記憶領域Ｂとを比較すると、物理記憶領域Ａの障害ビットの増加速度は、物理記憶領域Ｂの障害ビットの増加速度より高い。この障害ビット増加速度は、一般に消去回数に依存することが知られている。しかしながら、ＦＭの品質ばらつきは大きく、同じ消去回数でも、物理記憶領域Ａと物理記憶領域Ｂの障害ビット増加速度は、互いに異なる。つまり、消去回数は、劣化度の目安としてはある程度有用だが、ＦＭの信頼性に影響する障害ビットの増加傾向を直接反映したものではない。
【００２６】
ＦＭ２２０に記録したデータが消失する原因の多くが、ＦＭ２２０の劣化による電子の漏れとなっている。このため、本実施例のＮＶＭモジュールは、物理記憶領域毎に障害ビットの増加傾向を取得し、その増加傾向より得られる劣化度ポイントを消去回数の代用として管理する。物理記憶領域の劣化度ポイントは、その物理記憶領域の劣化の大きさを示し、劣化の大きさを消去回数に換算した値である。そして、本実施例のＮＶＭモジュールは、この劣化度ポイントに基づいて物理記憶領域の利用可否を判断する。また、本実施例のＮＶＭモジュールは、データ記録時に新規データ及び更新データを記録する物理記憶領域として、劣化度ポイントの相対的に小さな物理記憶領域を優先して選択するように制御することで、劣化度ポイントを平準化する。
【００２７】
（２）ストレージ装置の構成
【００２８】
図２は、本発明の実施例のコンピュータシステムの構成を示す。このコンピュータシステムは、ストレージ装置１０１と、ホスト１０３と、管理装置１０４とを有する。ストレージ装置１０１は、ＳＡＮ（Ｓｔｏｒａｇｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）を介してホスト１０３に接続されている。
【００２９】
ストレージ装置１０１は、複数のストレージコントローラ１１０を有する。ストレージ装置１０１は更に、複数（例えば１６個）のＮＶＭモジュール１１１及び複数（例えば１２０個）のＨＤＤ１１２等、複数の記憶装置を有する。なお、ストレージ装置１０１は、一つのストレージコントローラ１１０を有していても良いし、一つのＮＶＭモジュール１１１を有していても良いし、ＨＤＤ１１２を有していなくても良い。ＮＶＭモジュール１１１は例えば、ＳＳＤである。また、ＮＶＭモジュール１１１は、図２では最終記憶媒体とし記載されているが、キャッシュとして用いられても良い。
【００３０】
ストレージコントローラ１１０は、ホスト１０３との接続を行うホストインターフェース１２４と、記憶装置との接続を行うディスクインターフェース１２３を有する。ホストインターフェース１２４は例えば、ＦＣ（Ｆｉｂｒｅ  Ｃｈａｎｎｅｌ）、ｉＳＣＳＩ（ｉｎｔｅｒｎｅｔ  Ｓｍａｌｌ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍ  Ｉｎｔｅｒｆａｃｅ）、ＦＣｏＥ（Ｆｉｂｒｅ  Ｃｈａｎｎｅｌ  ｏｖｅｒ  Ｅｔｈｅｒｎｅｔ（登録商標））等のプロトコルに対応したデバイスである。ディスクインターフェース１０７は例えば、ＦＣ、ＳＡＳ（Ｓｅｒｉａｌ  Ａｔｔａｃｈｅｄ  ＳＣＳＩ）、ＳＡＴＡ（Ｓｅｒｉａｌ  Ａｄｖａｎｃｅｄ  Ｔｅｃｈｎｏｌｏｇｙ  Ａｔｔａｃｈｍｅｎｔ  ）、ＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）−Ｅｘｐｒｅｓｓ等のプロトコルに対応したデバイスである。
【００３１】
更に、ストレージコントローラ１１０は、プロセッサ１２１と、ＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等のメモリ１２５と、内部スイッチ（Ｉｎｔｅｒ−Ｃｏｎｎｅｃｔ  Ｓｗｉｔｃｈ）１２２とを有する。
【００３２】
内部スイッチ１２２は、プロセッサ１２１と、メモリ１２５と、ホストインターフェース１２４と、ディスクインターフェース１２３との間の通信を制御する。
【００３３】
メモリ１２５は、ストレージ装置１０１の制御のためのプログラム及びデータを格納する。プロセッサ１２１は、メモリ１２５内のプログラム及びデータに基づいて動作し、ホスト１０３からのリード／ライト要求に応じて、ＮＶＭモジュール１１１やＨＤＤ１１２３等の記憶装置（最終記憶装置）へのリード／ライト要求を行う。
【００３４】
尚、本実施例では、ＮＶＭモジュール１１１は、ディスクインターフェース１２３を介してストレージコントローラ１１０に接続されているが、本発明はこの例に限定されるものではない。ＮＶＭモジュール１１１は、例えばＰＣＩ−Ｅｘｐｒｅｓｓを介して内部スイッチ１２２に直接接続されてもよい。
【００３５】
また、ストレージコントローラ１１０は、ＲＡＩＤ（Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙ  Ｉｎｅｘｐｅｎｓｉｖｅ  Ｄｉｓｋ）  Ｐａｒｉｔｙ生成機能及び、ＲＡＩＤ  Ｐａｒｉｔｙによるデータ復元機能を有し、複数のＮＶＭモジュール１１１や複数のＨＤＤ１１２を任意の単位でＲＡＩＤグループとして管理する。また、ストレージコントローラ１１０は、ＲＡＩＤグループを任意の単位でＬＵ（Ｌｏｇｉｃａｌ  Ｕｎｉｔ）として分割し、論理記憶領域としてホスト１０３に提示する。
【００３６】
ストレージコントローラ１１０は、ホスト１０３からのＬＵへのライト要求受信時には指定されたＲＡＩＤ構成に応じてＰａｒｉｔｙを生成し、記憶装置にライトする。また、ストレージコントローラ１１０は、ホスト１０３からのＬＵへのリード要求受信時、記憶装置からデータをリードした後、データ損失の有無を検査し、データ損失が検出された場合、ＲＡＩＤ  Ｐａｒｉｔｙを用いてデータを復元し、復元されたデータをホスト１０３へ転送する。
【００３７】
また、ストレージコントローラ１１０は、記憶装置の障害、使用状況、動作状況等を監視及び管理する機能を持っている。
【００３８】
管理装置１０４は、ネットワークを介して複数のストレージコントローラ１１０に接続されている。このネットワークは例えば、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）である。この場合、ストレージコントローラ１１０は例えば、ネットワークインターフェースを有し、ＬＡＮがネットワークインターフェースに接続され、ネットワークインターフェースが内部スイッチ１２２に接続される。尚、管理装置１０４は、ＳＡＮ１０２を介して複数のストレージコントローラ１１０に接続されても良い。
【００３９】
ＮＶＭモジュール１１１は、本発明が適用された記憶装置である。ＮＶＭモジュール１１１は、複数のディスクインターフェース１２３に接続されている。ＮＶＭモジュール１１１は、ストレージコントローラ１１０からのライト要求に伴って転送されるデータを格納し、リード要求に応じて格納済みのデータを取り出してストレージコントローラ１１０に転送する。尚、このときディスクインターフェース１０７は、リード／ライト要求する論理的な格納位置を論理アドレス（以下ＬＢＡ：Ｌｏｇｉｃａｌ  Ｂｌｏｃｋ  Ａｄｄｒｅｓｓ）によって指定する。また、複数のＮＶＭモジュール１１１は、ストレージコントローラ１１０により複数のＲＡＩＤ構成に分割して管理されており、データ損失時に損失データの復元が可能な構成として管理されている。なお、複数のＮＶＭモジュール１１１の夫々は、単独で管理されていてもよい。
【００４０】
ＨＤＤ１１２は、ＮＶＭモジュール１１１と同様、複数のディスクインターフェース１２３に接続されている。ＨＤＤ１１２は、ストレージコントローラ１１０からのライト要求に伴って転送されるデータを格納し、リード要求に応じて格納済みのデータを取り出してストレージコントローラ１１０に転送する。尚、このときディスクインターフェース１２３は、リード／ライト要求する論理的な格納位置を論理アドレス（以下ＬＢＡ）によって指定する。また、複数のＨＤＤ１１２は複数のＲＡＩＤ構成に分割して管理されており、データ損失時に損失データの復元が可能な構成としている。
【００４１】
ホストインターフェース１２４は、ＳＡＮ１０２を介してホスト１０３に接続されている。尚、複数のストレージコントローラ１１０は、データや制御情報を相互に通信する接続パスを介して互いに接続されていても良い。
【００４２】
ホスト１０３は、例えば業務システムの中核をなすコンピュータやファイルサーバ等である。ホスト１０３は、プロセッサやメモリ、ネットワークインターフェース、ローカル入出力デバイス等のハードウェア資源を有し、デバイスドライバやオペレーティングシステム（ＯＳ）、アプリケーションプログラムなどのソフトウェア資源を有する。ホスト１０３は、プロセッサにより各種プログラムを実行することで、ストレージ装置１０１との通信及び、データのリード／ライト要求を行う。また、ホスト１０３は、プロセッサにより各種プログラムを実行することで、ストレージ装置１０１の使用状況、動作状況等の管理情報を取得する。また、ホスト１０３は、ストレージ装置１０１における記憶装置の管理単位や記憶装置制御方法、データ圧縮設定等を指定し、変更を行うことができる。
【００４３】
管理装置１０４は、プロセッサやメモリ、ネットワークインターフェース、ローカル入出力デバイス等のハードウェア資源と、管理プログラム等のソフトウェア資源を有するコンピュータである。管理装置１０４は、プロセッサにより管理プログラムを実行することで、ストレージ装置から情報を取得し、管理画面を表示する。システム管理者は、管理装置１０４に表示された管理画面を用いて、ストレージ装置１０１の監視、及び運用における設定を行う。
【００４４】
以上が、本実施例のコンピュータシステムの構成である。
【００４５】
（３）ＮＶＭモジュール１１１の構成
【００４６】
図３は、ＮＶＭモジュール１１１の構成を示す。ＮＶＭモジュール１１１は、ＦＭコントローラ２１０と、複数（例えば３２個）のＦＭ２２０とを有する。
【００４７】
ＦＭコントローラ２１０は、プロセッサ２１５と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）２１３と、データバッファ２１６と、Ｉ／Ｏインターフェース２１１と、ＦＭインターフェース２１７と、スイッチ２１４とを有する。
【００４８】
スイッチ２１４は、プロセッサ２１５と、ＲＡＭ２１３と、データバッファ２１６と、Ｉ／Ｏインターフェース２１１と、ＦＭインターフェース２１７とを接続し、それらの間のデータをアドレスまたはＩＤによってルーティングし転送する。
【００４９】
Ｉ／Ｏインターフェース２１１は、ディスクインターフェース１０７に接続されている。Ｉ／Ｏインターフェース２１１は、ストレージコントローラ１１０から、リード／ライト要求、要求対象ＬＢＡ、さらにライト要求時にはライトデータを受領し、ＲＡＭ２１３に記録する。また、Ｉ／Ｏインターフェース２１１は、ストレージコントローラ１１０からの指示を受領し、プロセッサ２１５に割り込みを発行する。さらに、Ｉ／Ｏインターフェース２１１は、ストレージコントローラ１１０から、ＮＶＭモジュール１１１の制御用コマンド等を受領し、そのコマンドに応じてＮＶＭモジュール１１１の動作状況、利用状況、現在の設定値等を、ストレージコントローラ１１０に通知する。
【００５０】
ＲＡＭ２１３は、プログラム及び管理情報１１８等を格納する。
【００５１】
プロセッサ２１５は、ＲＡＭ２１３に格納されたプログラム及び管理情報を基にＦＭコントローラ２１０全体を制御する。また、プロセッサ２１５は、定期的な情報取得、及び割り込み受信機能によって、ＦＭコントローラ２１０全体を監視する。
【００５２】
データバッファ２１６は、ＦＭコントローラ２１０でのデータ転送処理途中の一時的なデータを格納する。
【００５３】
ＦＭ２２０は例えば、ＦＭチップである。複数のＦＭ２２０の夫々には、チップ番号が付されている。ＦＭ２２０内の複数の物理ブロックの夫々には、物理ブロック番号が付されている。物理ブロック内の複数の物理ページの夫々には、物理ページ番号が付されている。
【００５４】
ＦＭインターフェース２１７は、複数（例えば１６）のバスや、ＣＥ（Ｃｈｉｐ  Ｅｎａｂｌｅ）信号線によってＦＭ２２０に接続されている。各バスには複数（例えば２）のＦＭ２２０を接続されており、ＦＭインターフェース２１７は、ＣＥ信号を用い、同一バスに接続された複数のＦＭ２２０を独立して制御する。
【００５５】
ＦＭインターフェース２１７は、プロセッサ２１５より指示されるリード／ライト要求に応じて動作する。
【００５６】
また、ＦＭインターフェース２１７は、ＥＣＣ生成回路と、ＥＣＣによるデータ損失検出回路と、ＥＣＣ訂正回路とを含むＥＣＣ回路を有する。データ書き込み時、ＥＣＣ生成回路は、データに対してＥＣＣを付加して書き込む。また、データ読み出し時、データ損失検出回路は、ＦＭ２２０からの読み出しデータを検査し、データ損失が検出された際、ＥＣＣ訂正回路は、データ訂正を行う。
【００５７】
プロセッサ２１５は、上位装置であるストレージコントローラ１１０からリード要求を受信した場合、ＦＭインターフェース２１７を介してＦＭ２２０から格納データをリードしデータバッファ２１６に転送し、上位装置からライト要求を受信した場合、ＦＭインターフェース２１７を介して格納すべきデータをデータバッファ２１６から読み出し、ＦＭ２２０に転送する。プロセッサ２１５は、ＦＭインターフェース２１７に対し、チップ番号と物理ブロック番号と物理ページ番号とにより要求対象を指定する。
【００５８】
以上説明した、スイッチ２１４、ディスクインターフェース２１１、プロセッサ２１５、データバッファ２１６、ＦＭインターフェース２１７は、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）やＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）として、一つの半導体素子内で構成されてもよいし、複数の個別専用ＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）を相互に接続することにより構成されてもよい。
【００５９】
ＲＡＭ２１３は、具体的にはＤＲＡＭなどの揮発性メモリである。ＲＡＭ２１３は、ＦＭ２２０の管理情報や、ＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）のための転送制御情報を含んだ転送リスト等を格納する。尚、ＲＡＭ２１３はデータを格納するデータバッファ２１６の機能の一部または全てを含む構成としてもよい。
【００６０】
以上がＮＶＭモジュール１１１の構成である。尚、本実施例のＮＶＭモジュール１１１は、ＦＭ２２０を有するが、ＦＭ２２０に限定されるものではない。ＮＶＭモジュール１１１は、Ｐｈａｓｅ  Ｃｈａｎｇｅ  ＲＡＭやＲｅｓｉｓｔａｎｃｅ  ＲＡＭ等の不揮発性メモリを有していてもよい。
【００６１】
以下、ＦＭ２２０について説明する。
【００６２】
図４は、ＦＭ２２０の構成を示す。ＦＭ２２０内の物理記憶領域は、複数（例えば４０９６個）の物理ブロック３０２を有する。物理記憶領域に格納されたデータは、物理ブロック３０２単位で消去される。またＦＭ２２０は、Ｉ／Ｏレジスタ３０１を有する。Ｉ／Ｏレジスタ３０１は、物理ページサイズ（例えば８ＫＢ）以上の記憶容量を持つレジスタである。
【００６３】
ＦＭ２２０は、ＦＭインターフェース２１７からのリード／ライト要求の指示に従って動作する。
【００６４】
ライト動作においてＦＭ２２０はまず、ＦＭインターフェース２１７より、ライトコマンドと、要求対象の物理ブロック番号及び物理ページ番号とを受信する。次に、ＦＭインターフェース２１７より転送されるライトデータをＩ／Ｏレジスタ３０１に格納する。その後、ＦＭ２２０は、Ｉ／Ｏレジスタ３０１に格納されたデータを指定された物理ブロック３０２内の物理ページにライトする。
【００６５】
リード動作においてＦＭ２２０はまず、ＦＭインターフェース２１７からリードコマンドと要求対象の物理ブロック番号及び物理ページ番号を受信する。次に、指定された物理ブロック３０２内の物理ページに格納されたデータをリードしＩ／Ｏレジスタ３０１に格納する。その後、ＦＭ２２０は、Ｉ／Ｏレジスタ３０１に格納されたデータをＦＭインターフェース２１７に対して転送する。
【００６６】
以下、物理ブロック３０２について説明する。
【００６７】
図５は、物理ブロック３０２の構成を示す。物理ブロック３０２は、複数（例えば１２８）の物理ページ４０１に分かれている。格納データの読み出しやデータの書き込みは、物理ページ４０１単位で処理される。また、物理ブロック３０２内の物理ページ４０１をプログラムする（書き込む）順序は固定されており、物理ページ番号順でプログラムしなければならない。また、書き込み済みページへの上書きは禁止されており、その物理ページ４０１が属する物理ブロック３０２を消去しなければ、再びその物理ページ４０１をプログラムすることができない。
【００６８】
以下、物理ページ４０１について説明する。
【００６９】
図６は、物理ページ４０１の構成を示す。物理ページ４０１は、一定ビット数（例えば４ＫＢ）のデータを記憶する。物理ページ４０１は、データ５０１と、ＦＭインターフェース２１７によりデータ５０１に付加されたＥＣＣ５０２とを格納している。ＥＣＣは、保護するデータ（以下保護データと記す）の後に隣接して格納される。例えば保護データであるデータ５０１と、それに付加されたＥＣＣ５０２とを合わせて一つのＥＣＣ  ＣＷ（Ｃｏｄｅ  Ｗｏｒｄ）５０３を構成している。
【００７０】
尚、ここで一つの物理ページ４０１にＥＣＣ  ＣＷ５０３を４個格納した構成について示したが、物理ページサイズや、ＥＣＣの強度（訂正可能障害ビット数）に合わせて、任意のＥＣＣ  ＣＷ数を格納してもよい。ここでのデータ損失障害（ｕｎｃｏｒｒｅｃｔａｂｌｅ  ｅｒｒｏｒ）は、ＥＣＣ  ＣＷ５０３当たりの障害ビット数が訂正可能障害ビット数を超過した際に生じる。
【００７１】
以降の説明では、「物理ブロック」のことを単に「ブロック」と記すことがあり、「物理ページ」のことを単に「ページ」と記すことがある。
【００７２】
以上が、ＮＶＭモジュール１１１の構成である。
【００７３】
（４）ＮＶＭモジュール１１１の管理情報１１８
【００７４】
以下、ＮＶＭモジュール１１１が制御に用いる管理情報１１８について説明する。管理情報１１８は、論物変換テーブルとブロック管理情報とを含む。
【００７５】
ここでは、ＮＶＭモジュール１１１が用いる管理情報のうち、論理アドレス（ＬＢＡ）を物理アドレス（ＰＢＡ：Ｐｈｙｓｉｃａｌ  Ｂｌｏｃｋ  Ａｄｄｒｅｓｓ）に変換するための論物変換テーブル７００について説明する。
【００７６】
図７は、論物変換テーブル７００を示す。論物変換テーブル７００は、プロセッサ２１５により生成され、ＤＲＡＭ２１３内に格納される。論物変換テーブル７００はフィールドとして、ＮＶＭモジュールＬＢＡ７０１と、ＮＶＭモジュールＰＢＡ７０２とを有する。以下の説明において、ＮＶＭモジュールＬＢＡを、単にＬＢＡと記すことがあり、ＮＶＭモジュールＰＢＡを、単にＰＢＡと記すことがある。本実施例の論物変換テーブル７００は、ＮＶＭモジュール１１１内のユーザ領域として用いられる全てのページのエントリを有する。
【００７７】
プロセッサ２１５は、上位装置からリード／ライト要求の対象となるＮＶＭモジュールＬＢＡを受信した後、論物変換テーブル７００を用いて、そのＮＶＭモジュールＬＢＡから実際のデータが格納されている場所を示すＮＶＭモジュールＰＢＡを取得する。この論物変換により、プロセッサ２１５は、データの上書き更新時に、そのデータの格納先と同一のＮＶＭモジュールＬＢＡへのライト更新を、格納先と異なるＮＶＭモジュールＰＢＡへのライトとして処理する。このライトの後、プロセッサ２１５は、論物変換テーブル７００において、ＬＢＡに対して、更新データが書き込まれたＰＢＡを割り当てることで、データの上書きを実現する。また、本実施例では、この論物変換テーブル７００を用いて、記録データの存在するＬＢＡ領域にのみＰＢＡを割り当てることで、ＮＶＭモジュール１１１の物理記憶容量の効率的な利用を図る。
【００７８】
ＬＢＡ７０１は、ＮＶＭモジュール１１１が提供する論理記憶領域を１６ＫＢ（論理ページ）単位で順に並べたものである。これは本実施例のＮＶＭモジュール１１１が、ＬＢＡ７０１とＰＢＡ７０２との対応付けを１６ＫＢ単位で管理することを示す。但し、本発明では、このＬＢＡ７０１とＰＢＡ７０２との対応付けを１６ＫＢ単位にて管理することに限定されるものではない。
【００７９】
ＰＢＡ７０２は、ＮＶＭモジュール１１１が管理する全ＦＭ２２０の特定の物理記憶領域を示す情報を格納する。本実施例では、１６ＫＢ（物理ページ）単位で区切られたアドレスを持つ。この例では、ＬＢＡ値「０ｘ０００＿００００＿００００」にＰＢＡ値「ＸＸＸ」が対応付けられている。このＰＢＡ値は、ＮＶＭモジュール１１１内のＦＭ２２０の物理記憶領域を一意に示すアドレスであり、ＮＶＭモジュール１１１内のチップ番号と、そのチップ内のブロック番号と、そのブロック内のページ番号とを示しても良い。例えば、プロセッサ２１５は、リードリクエスト先アドレスとして、ＬＢＡ値「０ｘ０００＿００００＿００００」を受領した場合、論物変換テーブル７００に基づいてＮＶＭモジュール１１１内の物理的なリード先のＰＢＡ値「ＸＸＸ」を取得する。
【００８０】
また、ＬＢＡに対応付けられたＰＢＡが無い場合、ＰＢＡ７０２に「未割当」であることを示す値が格納される。
【００８１】
ＮＶＭモジュール１１１は、この論物変換テーブル７００を用いて、ＬＢＡに対して自由にＰＢＡを割り当てることができる。以降、論物変換テーブル７００によりＬＢＡに対応づけられたＰＢＡ領域（ページ）を、上位装置から参照される可能性がある領域という意味で「有効ＰＢＡ領域」と記すことがある。また、論物変換テーブル７００によりＬＢＡに対応づけられていないＰＢＡ領域を、上位装置から参照される可能性が全くないという意味で「無効ＰＢＡ領域」と記すことがある。
【００８２】
以上が論物変換テーブル７００である。
【００８３】
ここでは、ＮＶＭモジュール１１１が用いる管理情報のうち、ブロックを管理するためのブロック管理情報について説明する。
【００８４】
図８は、ブロック管理テーブル８００を示す。ブロック管理テーブル８００は、プロセッサ２１５により生成され、ＤＲＡＭ２１３内に格納される。ブロック管理テーブル８００はフィールドとして、ＮＶＭモジュールＰＢＡ８０１と、チップ番号（ＮＶＭ  Ｃｈｉｐ）８０２と、ブロック（Ｂｌｏｃｋ）番号８０３と、無効（Ｉｎｖａｌｉｄ）ＰＢＡ量８０４と、劣化度ポイント８０５と、消去回数８０６と、最終書き込みページ８０７とを有する。
【００８５】
ＮＶＭモジュールＰＢＡ８０１は、ＮＶＭモジュール１１１が管理する全てのＦＭ２２０の物理記憶領域を一意に指定するＰＢＡ値を格納するフィールドである。本実施例のブロック管理情報では、ＰＢＡをブロック単位で区分して管理する。即ち、ブロック管理テーブル８００は、ＮＶＭモジュール１１１内の全てのブロックのエントリを有する。ここでは、ＰＢＡ値として、ブロックの先頭アドレスを格納する例を示す。例えば、ＮＶＭモジュールＰＢＡ８０１がＰＢＡ値「０ｘ０００＿００００＿００００」であるエントリは、「０ｘ０００＿００００＿００００」〜「０ｘ０００＿００３Ｆ＿ＦＦＦＦ」のＰＢＡ範囲を有するブロックを示している。
【００８６】
チップ番号８０２は、ＮＶＭモジュール１１１内のＦＭ２２０のチップを一意に指定するチップ番号を格納するフィールドであり、該当ブロックを含むＦＭ２２０を示す。
【００８７】
ブロック番号８０３は、チップ番号８０２の格納値により指定されるＦＭ２２０内のブロック番号を格納するフィールドであり、該当ブロックを示す。
【００８８】
無効ＰＢＡ量８０４は、チップ番号８０２の格納値により指定されるＦＭ２２０内で、ブロック番号８０３の格納値により指定される該当ブロックの中の無効ＰＢＡ量を格納するフィールドである。無効ＰＢＡ量とは、該当ブロックのうち、論物変換テーブル７００にてＬＢＡに対応づけられていない無効ＰＢＡ領域のサイズである。無効ＰＢＡ領域は、データの上書きが不可能なＦＭ２２０において疑似的に上書きを実現しようとする際に必然的に生じる。具体的には、或るＬＢＡのデータ更新の際、プロセッサ２１５は、他の未書き込みＰＢＡ領域を選択し、選択されたＰＢＡ領域に更新データを記録し、論物変換テーブル７００において当該ＬＢＡに対応するＰＢＡを、更新データが記録されたＰＢＡ領域の先頭アドレスに書き換える。この時、更新前データが格納されたＰＢＡ領域は、論物変換テーブル７００から削除されることにより、ＬＢＡ領域との対応付けを解除され無効ＰＢＡ領域となる。
【００８９】
劣化度ポイント８０５は、ＮＶＭモジュールＰＢＡ８０１により指定された該当ブロックの劣化度ポイントを管理するフィールドである。この値は、該当ブロックについて推定された劣化度を消去回数に相当する値として示す。劣化度ポイント８０５の値は、後述する劣化度定期評価処理において決定され、劣化度定期評価処理により該当ブロックが評価される度に更新される。また、プロセッサ２１５は、該当ブロックが消去される度に劣化度ポイント８０５の値を１インクリメントする。また、劣化度ポイント８０５に格納された値が、予めシステムに設定された劣化度ポイント上限値を超えている場合、プロセッサ２１５は、該当ブロックを利用不可能とする。これにより、プロセッサ２１５は、劣化度定期評価処理の間の期間においても、消去により劣化度が劣化度ポイント上限値を超えた該当ブロックの利用を停止することができる。逆に、プロセッサ２１５は、劣化度定期評価処理により、該当ブロックの劣化度ポイントが劣化度ポイント上限値を下回った場合に、該当ブロックの利用を再開することができる。また、プロセッサ２１５は、この劣化度ポイント８０５の値を平準化するようにブロックの利用選択（ウェアレベリング）を行う。
【００９０】
消去回数８０６は、ＮＶＭモジュールＰＢＡ８０１により指定された該当ブロックの消去回数を管理するフィールドである。この値は、該当ブロックの消去の度に１インクリメントされて更新される。プロセッサ２１５は、劣化度ポイント８０５の値のように上限値と比較することをせず、該当ブロックを利用する限り消去回数をカウントする。該当ブロックの品質が悪い場合、消去回数８０６の値が小さくとも、劣化度ポイント８０５の値が劣化度ポイント上限値を超えると、該当ブロックは利用不可ブロックとして管理される。一方で、該当ブロックの品質が良い場合、消去回数８０６の値が大きくとも、劣化度ポイント８０５の値が劣化度ポイント上限値を超えるまで、該当ブロックは利用される。尚、本実施例ではブロック管理テーブル８００に消去回数８０６の欄を持つ例について記すがプロセッサ２１５は必ずしも消去回数８０６を管理する必要はない。劣化度ポイント８０５が管理されていれば、ＦＭ２２０の信頼性を維持できる。
【００９１】
最終書き込みページ８０７は、ＮＶＭモジュールＰＢＡ８０１により指定された該当ブロックにおいて最後に書き込みが行われたページを示す。ブロックは、先頭ページからページ番号順に書き込まれるため、
【００９２】
以下の説明において、論物変換テーブル７００によりＬＢＡに対応付けられていないブロックのうち、利用停止されていないブロックを予備領域とも呼ぶ。また、予備領域のうち、ブロック管理テーブル８００の最終書き込みページ８０７の値が０であるブロックを、未書き込みブロックと呼ぶ。
【００９３】
以上がブロック管理テーブル８００である。
【００９４】
（５）劣化度定期評価処理
【００９５】
以下、ＮＶＭモジュール１１１による劣化度定期評価処理について説明する。本実施例において、ＮＶＭモジュール１１１は、稼働中（例えば、ＮＶＭモジュールは上位ストレージコントローラ１１０に対して記憶装置としての機能を果し、Ｒｅａｄ／ＷｒｉｔｅＩＯの受領と処理を継続中）にＮＶＭモジュール１１１が管理する物理記憶領域についてブロック毎の劣化度ポイントを悉皆調査する。このとき、ＮＶＭモジュール１１１内の多くのブロックを一度に検査することもできるが、ＮＶＭモジュール１１１は、上位装置に対して一定の記憶領域を提供する必要があるため、物理記憶領域を一定のサイズ（例えば全物理記憶領域の１％）毎に順に検査する。つまり、一部の記憶領域を劣化度ポイントの調査対象としながらも、他の大半の領域は通常の記憶領域として制御する。
【００９６】
本実施例において、プロセッサ２１５は、ＮＶＭモジュール１１１の稼働直後から劣化度定期評価処理を開始する。そして、全てのブロックの劣化度ポイントの評価の後、即座に再び全てのブロックの劣化度ポイントの評価を開始する。このように全てのブロックの劣化度ポイントの評価を間断なく実施することで、ＮＶＭモジュール１１１内のブロック毎の劣化度ポイントを評価し続ける。尚、本発明はこうした間断のない劣化度定期評価処理に限定されるものではなく、任意のタイミングで全ての物理記憶領域の検査が行われてもよい。例えば、プロセッサ２１５は、劣化度ポイントの評価をランダムに開始してもよいし、ＮＶＭモジュール１１１が管理するブロックのうち最も消去回数の多いブロックの消去回数が一定値に到達したことを契機に劣化度定期評価処理を実施するとしてもよい。また、全てのブロックの劣化度を評価することに限るものではない。ある所定のブロックの領域を劣化度の評価対象から外してもよい。
【００９７】
ＮＶＭモジュール１１１内の全てのＦＭ２２０内の全てのブロックに対し、連続する番号である連続番号が付される。
【００９８】
図９は、劣化度定期評価処理を示す。まず、プロセッサ２１５は、一度に評価されるブロック群の開始のブロックを示す連続番号である評価開始ブロック番号の値を０に設定する（Ｓ９０１）。
【００９９】
その後、プロセッサ２１５は、同時に評価するブロックの個数である同時評価ブロック数を算出する（Ｓ９０２）。具体的には、プロセッサ２１５は、全ブロック数を評価周期で除した商を算出し、その商と評価時間の積を同時評価ブロック数として算出する。
【０１００】
評価周期は、全ブロックの評価の周期である。評価周期は、管理装置１０４に表示される管理画面にて入力され変更される。管理画面については後述する。尚、本実施例では、管理者が管理装置１０４を通じて評価周期を変更する例について記すが、本発明はこの実施例に限定されるものではない。評価周期は、開発時に一定値に定められてもよい。
【０１０１】
評価時間は、同時評価ブロック数のブロックの評価であるブロック劣化度評価処理に掛かる時間である。評価時間は、温度により変化する。評価時間は、前回のブロック劣化度評価処理に要した時間を用いる。初回の評価時間は初期設定値（例えば４日）である。
【０１０２】
例えば、ＮＶＭモジュール１１１の全物理記憶領域のサイズが２ＴＢであり、この領域が２ＭＢのブロック２０９７１５２個で構成されており、評価周期が２００日間であり、評価時間が４日であるとき、同時評価ブロック数は、２０９７１５２÷２００×４＝４１９４３．０４≒４１９４４個と算出される。
【０１０３】
その後、プロセッサ２１５は、評価開始ブロック番号から始まる同時評価ブロック数のブロックを、一回の評価対象である評価対象ブロック群として選択する（Ｓ９０３）。例えば、同時評価ブロック数をＮとすると、プロセッサ２１５は、評価開始ブロック番号が０であれば、連続番号が０からＮ−１までのブロックを評価対象ブロック群に設定する。次の評価において、プロセッサ２１５は、評価開始ブロック番号がＮになるため、連続番号がＮから２Ｎ−１までのブロックを評価対象ブロック群に設定する。以下の説明において、一つの評価対象ブロック群の評価（Ｓ９０３〜Ｓ９０７）を評価処理と呼ぶことがある。
【０１０４】
その後、プロセッサ２１５は、評価対象ブロック群内の有効ＰＢＡ領域をコピー元ＰＢＡ領域として選択し、評価対象ブロック群以外から、コピー元ＰＢＡ領域のコピーに必要な未書き込みブロックをコピー先ＰＢＡ領域として選択し、コピー元ＰＢＡ領域に格納されているデータを、コピー先ＰＢＡ領域へコピーする（Ｓ９０４）。本実施例では、プロセッサ２１５が、ＮＶＭモジュール１１１内部に一定量以上の未書き込みブロックを確保するようにリクラメーション処理を行う。プロセッサ２１５は、一定量以上プールされている未書き込みブロックから、劣化度ポイント８０５の値に基づいてコピー先ＰＢＡ領域を選択する。なお、プロセッサ２１５は、各ブロックの連続番号や、そのブロックが評価対象ブロック群であるか否かを示す情報を管理しても良い。
【０１０５】
その後、プロセッサ２１５は、論物変換テーブル７００において、Ｓ９０４のコピー元ＰＢＡ領域に対応付けられたＬＢＡに、コピー先ＰＢＡ領域を対応づけるように変更する（Ｓ９０５）。これにより、評価対象ブロック群のＰＢＡ領域は、上位装置から参照されることのない無効ＰＢＡ領域となる。
【０１０６】
その後、プロセッサ２１５は、評価対象ブロック群内の各ブロックの劣化度ポイントを決定するブロック劣化度評価処理を実施する（Ｓ９０６）。このブロック劣化度評価処理の詳細については、後述する。
【０１０７】
その後、プロセッサ２１５は、次の評価対象ブロック群を決定するために、評価開始ブロック番号を同時評価ブロック数だけインクリメントする（Ｓ９０７）。
【０１０８】
その後、プロセッサ２１５は、評価開始ブロック番号がＮＶＭモジュール１１１内の全ブロック数に到達したか否かを判定する（Ｓ９０８）。評価開始ブロック番号が全ブロック数以上である場合、プロセッサ２１５は、管理する全ブロックを評価したと判断し、処理をＳ９０９に遷移させる。一方で、評価開始ブロック番号が全ブロック数より小さい場合、プロセッサ２１５は、次の評価対象ブロック群を評価する為に、処理をＳ９０３に遷移させる。
【０１０９】
その後、プロセッサ２１５は、終了指示を受けたか否かを判定する（Ｓ９０９）。終了指示を受けた場合、プロセッサ２１５は、劣化度定期評価処理を終了する。なお、終了指示は、管理者により管理装置１０４を介して入力されてもよいし、所定の条件の下で管理装置１０４により発行されてもよい。例えば、ＮＶＭモジュール１１１の稼働年数が一定値に達した場合、劣化度定期評価処理をこれ以上実施する必要がないとして、終了を指示するとしてもよい。
【０１１０】
Ｓ９０９において終了指示を受けていない場合、プロセッサ２１５は、評価周期を更新する（Ｓ９１０）。ここで、管理者が管理装置１０４に表示される管理画面を通じて評価周期を変更していた場合、プロセッサ２１５は、変更後の評価周期を、以降の劣化度定期評価処理に用いる。
【０１１１】
以上が劣化度定期評価処理である。
【０１１２】
評価周期を長く（例えば半年）することにより、評価対象ブロック群のサイズは、予備領域のサイズや、確保されている未書き込みブロックの合計サイズに比べて小さくすることができる。これにより、劣化度定期評価処理によるＮＶＭモジュール１１１の性能低下を防ぐことができる。プロセッサ２１５又は管理装置１０４が、評価対象ブロック群のサイズの上限値を記憶し、この上限値に基づいて評価周期の範囲を決定しても良い。
【０１１３】
また、劣化度定期評価処理中に評価対象ブロック群がストレージコントローラ１１０からのＩＯ要求によりアクセスされることはない。評価対象ブロック群内の第１ＰＢＡ領域が特定のＬＢＡ領域に対応付けられている場合、前述のＳ９０４及びＳ９０５により、第１ＰＢＡ領域に格納されていたデータは、評価対象ブロック群以外の第２ＰＢＡ領域へコピーされ、第１ＰＢＡ領域に対応付けられていた特定のＬＢＡ領域は、第２ＰＢＡ領域に対応付けられる。これにより、論物変換テーブル７００内のＬＢＡ領域が、評価対象ブロック群内のＰＢＡ領域に対応付けられることはなく、第１ＰＢＡ領域はストレージコントローラ１１０から隠蔽される。
【０１１４】
ここで、劣化度定期評価処理中にストレージコントローラ１１０からＩＯ要求を受信したＮＶＭモジュール１１１の動作について説明する。プロセッサ２１５は、ストレージコントローラ１１０からリード要求を受信すると、論物変換テーブル７００に基づいて、リード要求で指定されたＬＢＡ領域に対応する有効ＰＢＡ領域を取得し、取得されたＰＢＡ領域からデータを読み出す。ここで読み出されるＰＢＡ領域は、評価対象ブロック群以外のＰＢＡ領域になる。また、プロセッサ２１５は、ストレージコントローラ１１０から新規データのライト要求を受信すると、ブロック管理テーブル８００に基づいて、評価対象ブロック群以外から、ライト要求で指定されたサイズの未書き込みＰＢＡ領域を取得し、取得されたＰＢＡ領域に新規データを書き込み、ライト要求で指定されたＬＢＡに、書き込まれたＰＢＡ領域を対応付ける。ここで新規データが書き込まれるＰＢＡ領域は、評価対象ブロック群以外のＰＢＡ領域になる。また、プロセッサ２１５は、ストレージコントローラ１１０から更新データのライト要求を受信すると、評価対象ブロック群以外から、ライト要求で指定されたサイズの未書き込みＰＢＡ領域を取得し、取得されたＰＢＡ領域に更新データを書き込み、ライト要求で指定されたＬＢＡに、書き込まれたＰＢＡ領域を対応付け、更新前データを格納するＰＢＡ領域を無効ＰＢＡ領域に変更する。ここで更新データが書き込まれるＰＢＡ領域は、評価対象ブロック群以外のＰＢＡ領域になる。
【０１１５】
（６）ブロック劣化度評価処理
【０１１６】
以下、前述の劣化度定期評価処理のＳ９０６におけるブロック劣化度評価処理の詳細について説明する。
【０１１７】
図１０は、ブロック劣化度評価処理を示す。まず、プロセッサ２１５は、評価対象ブロック群内の全てのブロックを消去する（Ｓ１００１）。ここで、評価対象ブロック群の全てのブロックは、無効ＰＢＡ領域となっており、上位装置からは参照されない領域となっているため、ＮＶＭモジュール１１１は、評価対象ブロック群を削除することができる。
【０１１８】
その後、プロセッサ２１５は、評価対象ブロック群に予め定められた固定データを記録する（Ｓ１００２）。ここでの「固定データ」とは、ＦＭ２２０内のセルに電子を一定量以上注入するデータであることを指す。ＦＭ２２０では、書き込まれるデータの値によって、セルへ注入される電子の量が異なる。本実施例ではビット値として０を書き込むことがセルに一定量の電子を注入するものとし、固定データは評価対象ブロック群を０値で埋めるデータである。尚、本発明はこの固定データに限定されるものではない、
【０１１９】
その後、プロセッサ２１５は、所定の待機時間だけ放置する（Ｓ１００３）。
【０１２０】
Ｓ１００２及びＳ１００３は、各セルの劣化度評価条件を一定に揃え、各セルを安定状態にて評価するために実施される。
【０１２１】
以下、この劣化度評価条件の安定化について述べる。
【０１２２】
ＦＭ２２０内のセルは、それ以前の複数回の書き換えの時間間隔である書き換え間隔により、データの保持能力が大きく変化することが知られている。例えば過去３回の書き換え間隔が短い場合、次に書き込むデータについては、単位時間当たりの障害ビット増加量が増加する。この現象は、セルのトラップ電子（絶縁膜に捕らわれた電子）の量に起因する。書き換え間隔が短い場合、セルのトラップ電子の量が増加し、セルのフローティングゲートに注入する電子の量が減少する為である。トラップ電子は、フローティングゲート内の電子よりも短期間でセルから漏れる為、トラップ電子の量が多いほど、短期間でセルの状態が変化しやすくなる。このため、評価対象ブロック群は、直近の過去の複数回の書き換え間隔が短い場合、不当に障害ビットが増加してしまう。
【０１２３】
トラップ電子のデータ保持能力の影響は、数時間から数十時間の放置によりある程度軽減できる。セルのトラップ電子を減少させるには、一定期間セルへの書き込みを停止する必要があるため、プロセッサ２１５は、Ｓ１００３を行う。また、この待機時間中にセルのフローティングゲートに電子を一定量以上注入していたほうが、トラップ電子を減少させることができるため、プロセッサ２１５は、Ｓ１００２を行う。尚、トラップ電子の減少は、時間経過と共に鈍化する。つまり１時間放置したときに減少するトラップ電子の量と比べて、その後１時間放置した際に減少するトラップ電子の量は、少なくなる。
【０１２４】
本実施例では、セルに固定データを書き込んだ後、待機時間だけ放置することで、評価対象ブロック群のセルのトラップ電子を減少させ、評価対象ブロック群内の各セルの劣化度評価条件を揃えることにより、安定した評価が可能となる。尚、Ｓ１００２及びＳ１００３は、ブロック劣化度評価処理に必須ではない。例えば、短い書き換え間隔が繰り返されないように制御されるＮＶＭモジュールであれば、Ｓ１００２及びＳ１００３が実施されなくとも、安定して劣化度ポイントを評価できる。
【０１２５】
その後、プロセッサ２１５は、固定データが書き込まれた評価対象ブロック群を消去する（Ｓ１００４）。これにより、評価対象ブロック群へ新たにデータを書き込むことができる。尚、ＦＭ２２０の代わりに上書き可能な記憶素子を用いる場合、この処理は不要である。
【０１２６】
その後、プロセッサ２１５は、評価用データを書き込む（Ｓ１００５）。前述のとおり、ＦＭ２２０では、データ記録後の時間経過により、記録されたデータ中に生じる障害ビット数が増加する。或るブロックの単位時間当たりの障害ビットの増加数である障害ビット増加率は、そのブロックの累積消去回数や過去の書き換え間隔によっても変化するが、記録するデータによっても変化する。評価用データは例えば、「１０１０１０１０」のようにビット値が交互に変化するデータであり、隣接するセルに記録されるビット値が互いに異なるデータである。このような評価用データが記録された場合のブロックの障害ビット増加率は、ランダムデータが記録された場合のそのブロックの障害ビット増加率より顕著に高い。或いは、評価用データが記録された場合のブロックの放置時間経過後の障害ビット数は、ランダムデータが記録された場合のそのブロックの放置時間経過後の障害ビット数より高い。本実施例では、こうした障害ビット増加率が顕著に高いデータを記録することで、その後の放置中に生じる障害ビット数を増加させることができ、劣化度ポイントの精度を向上させることができる。
【０１２７】
その後、プロセッサ２１５は、データを記録した直後の評価対象ブロック群内の各ブロックに生じた障害ビット数である第１障害ビット数を測定する（Ｓ１００６）。障害ビット数の測定は例えば、ＥＣＣ回路により訂正されたビット値をカウントすることで行う。これにより、書き込み時に生じる障害ビット数を測定することができる。
【０１２８】
また、本実施例では、障害ビット数を測定する評価用のリード方法として、通常のリード方法と異なる方法を用いることで、障害ビットを増加させる。具体的には、プロセッサ２１５は、評価用の読出し閾値電圧を通常の読出し閾値電圧より高くすることにより、障害ビットを増加させる。
【０１２９】
図１１は、評価時の読出し電圧の制御を示す。この図において、縦軸はＦＭ２２０内のセルの閾値電圧を示し、横軸は各閾値電圧を有するセルの存在個数を示す。この図は更に、ビット値「０」を書き込まれたセル群の閾値電圧分布Ｄ０と、ビット値「１」を書き込まれたセル群の閾値電圧分布Ｄ１とを示す。この図は更に、通常の読出し電圧ＶＮと、ＶＮより高い評価用の読み出し電圧ＶＥとを示す。ＦＭ２２０は、通常時、セルの閾値電圧がＶＮより高い場合にビット値を「０」と判断し、セルの閾値電圧がＶＮよりも低い場合にビット値を「１」と判断する。ビット値「０」を書き込んだセル群の閾値電圧分布の下端の一部分のセルの閾値電圧は、ＶＮより低い。この一部分のセルは、ビット値として「０」を記録したにもかかわらず、読み出し時には「１」と判断され、障害ビットとなる。通常、セルの閾値電圧は時間経過とともに低下するため、ビット値「０」を書き込んだセル群のうち、徐々に「１」と読み出されるセルが増加する。
【０１３０】
このようにＶＮを用いて検出される障害ビット数は極めて少ないため、これを用いて決定される劣化度ポイントの精度は低い。そこで、プロセッサ２１５は、評価用データの読み出しにおいて、ＶＮより高いＶＥを用いる。即ち、ＦＭ２２０は、評価用データの読み出しにおいて、セルの閾値電圧がＶＥより高い場合にビット値を「０」と判断し、セルの閾値電圧がＶＥよりも低い場合にビット値を「１」と判断する。これにより、ＶＮを用いる場合に比べて障害ビット数を増加させることができる。この制御により、通常のリード方法より障害ビットを多く取得でき、劣化度ポイントの精度を向上させることができる。尚、本実施例では、評価時にＶＮより高いＶＥを使用するとしたが、本発明はこの方法に限定されるものではなく、障害ビットを取得するために、ＶＮを用いてもよい。
【０１３１】
その後、プロセッサ２１５は、放置時間だけ放置する（Ｓ１００７）。本実施例では、プロセッサ２１５は、温度に基づいて放置時間を変更する。プロセッサ２１５は、評価対象ブロック群が属するＦＭ２２０の温度を監視しており、その温度が高いほど放置時間が短くなるように設定する。例えば、室温である２５度環境での放置時間が２日と設定されている場合、５０度の環境での放置時間は１日と設定される。評価時間は、待機時間と放置時間の和であるため、温度の影響で放置時間が変化することにより、評価時間も変化する。Ｓ９０２において、プロセッサ２１５は、この評価時間の変化に応じて、同時評価ブロック数を調整することにより、評価周期を指定された値に等しくする。
【０１３２】
ここで、温度により放置時間を変更する理由について説明する。ＦＭ２２０は、温度の増加によってデータ記録後の障害ビットの増加が加速することが知られている。例えば、或るＦＭ２２０において、２５℃環境にて３０日経過したことにより各ブロックの障害ビット数が平均３ビット増加し、５０℃環境にて５日経過したことにより各ブロックの障害ビット数が平均３ビット増加する。こうした温度による障害ビット増加の加速の影響は、ＦＭ２２０の製造ベンダや製造プロセスに依存して様々である。本実施例では、ＮＶＭモジュール１１１の出荷前にＦＭ２２０の温度による障害ビット増加の加速の影響を調査し、その情報をＮＶＭモジュール１１１に格納することで、プロセッサ２１５は、温度変化に応じて放置時間を変更する。本実施例では、単位時間当たりの障害ビット増加量によって劣化度ポイントを判定する。ここでの単位時間は放置時間であり、放置時間は温度に応じて変更される。尚、ＦＭ２２０の温度が一定であることが予測される環境では、温度により放置時間を変更する必要はなく、放置時間を一定としてよい。また、プロセッサ２１５は、放置時間を一定とし、測定された障害ビット増加量に、温度に基づく係数を乗じることにより、障害ビット増加量の温度補正を行っても良い。
【０１３３】
その後、プロセッサ２１５は、放置時間経過後に、評価対象ブロック群内の各ブロックに生じた障害ビット数である第２障害ビット数を測定する（Ｓ１００８）。ここで、プロセッサ２１５は、Ｓ１００６と同じリード方法を用いることで、障害ビットを増加させる。但し、Ｓ１００６と同様、本発明はこの方法に限定されるものではない。
【０１３４】
その後、プロセッサ２１５は、評価対象ブロック群内の各ブロックについて、第２障害ビット数から第１障害ビット数を減じた値を障害ビット増加量として算出し、障害ビット増加量から劣化度ポイントを推定する（Ｓ１００９）。
【０１３５】
ここでは、Ｓ１００９における劣化度ポイントの推定のための情報について説明する。
【０１３６】
図１２は、劣化度ポイント推定テーブル１１００を示す。劣化度ポイント推定テーブル１１００は、ＤＲＡＭ２１３内に格納されており、障害ビット増加量１１０１と劣化度ポイント１１０２の対応関係を管理する。Ｓ１００９において、プロセッサ２１５は、劣化度ポイント推定テーブル１１００を参照し、障害ビット増加量１１０１に記載された値が該当する行を探索し、その行の劣化度ポイント１１０２の値を取得する。劣化度ポイント推定テーブル１１００は、ＮＶＭモジュール１１１の出荷前にＦＭ２２０の特性を調査することで作成される。
【０１３７】
例えば、評価対象ブロック群内の或るブロックの障害ビット増加量が「４」のとき、プロセッサ２１５は、劣化度ポイント推定テーブル１１００から、障害ビット増加量１１０１の値に該当する行の劣化度ポイント１１０２の値「１１００」を取得する。この値が該当ブロックの劣化度ポイントである。
【０１３８】
プロセッサ２１５は、評価対象ブロック群内の各ブロックについて、取得された劣化度ポイントを、ブロック管理テーブル８００において該当ブロックの劣化度ポイント８０５に書き込むことで、該当ブロックの劣化度ポイントを更新する。
【０１３９】
尚、本実施例では、書き込み直後の第１障害ビット数と放置時間経過後の第２障害ビット数との差を用いて、放置時間中の障害ビット増加量を算出したが、第１障害ビット数が無視可能である場合、Ｓ１００６は無くても良い。また、第１放置時間と、第１放置時間より長い第２放置時間とを用い、評価用データの書き込みから第１放置時間経過後の障害ビット数を第１障害ビット数とし、評価用データの書き込みから第２放置時間経過後の障害ビット数を第２障害ビット数としても良い。
【０１４０】
劣化度ポイントは例えば、データの記録から所定の保持時間（例えば３か月）の経過後の障害ビット数に基づいて決定される。また、劣化度ポイント上限値は例えば、データの記録から保持時間の経過後の障害ビット数がＥＣＣにより訂正可能な範囲内であることを満たす最大の劣化度ポイントである。この場合、単位時間当たりの障害ビット増加量である障害ビット増加率（障害ビット増加速度）を推定し、その障害ビット増加率を用いて所定時間の経過後の障害ビット数を推定することにより、劣化度ポイントが推定される。書き込み直後の第１障害ビット数が無視できない場合、第１障害ビット数と第２障害ビット数を用いることにより、第２障害ビット数だけを用いる場合に比べて、障害ビット増加率の推定精度を高めることができ、保持時間の経過後の障害ビット数の推定精度を高めることができる。これにより、劣化度ポイントの推定精度を高めることができる。
【０１４１】
以上がブロック劣化度評価処理である。
【０１４２】
（７）ウェアレベリング
【０１４３】
以下、劣化度ポイントを用いるウェアレベリングについて説明する。
【０１４４】
ここでは、ダイナミック・ウェアレベリングについて説明する。
【０１４５】
リクラメーション処理において、プロセッサ２１５は例えば、未書き込みブロック数が一定数を下回ると、ブロック管理テーブル８００に基づいて、有効データを格納するブロックの中から、他のブロックに比べて無効ＰＢＡ量が相対的に多いブロックをコピー元ブロック（第１領域）として選択する。更にプロセッサ２１５は、ブロック管理テーブル８００に基づいて、評価対象ブロック群以外の未書き込みブロックの中から、他のブロックに比べて劣化度ポイントが相対的に小さいブロックを、コピー先ブロック（第２領域）として選択する。その後、プロセッサ２１５は、コピー元ブロック内の有効データをコピー先ブロックへコピーし、コピー元のＰＢＡ領域を無効ＰＢＡ領域とし、全てが無効ＰＢＡ領域であるブロックを消去して未書き込みブロックとし、論物変換テーブル７００においてコピー元ブロックに対応付けられているＬＢＡ領域をコピー先ブロックのＰＢＡ領域に対応付ける。ここでプロセッサ２１５は、無効ＰＢＡ量が多い順にコピー元ブロックを選択しても良い。
【０１４６】
また、前述のＳ９０４において、プロセッサ２１５は、ブロック管理テーブル８００に基づいて、未書き込みブロックから劣化度ポイントが相対的に小さいブロックを、コピー先ブロックとして選択する。
【０１４７】
ここでは、スタティック・ウェアレベリングについて説明する。
【０１４８】
プロセッサ２１５は例えば、定期的に、ブロック管理テーブル８００に基づいて、未書き込みブロック以外から、無効ＰＢＡ量に関係なく、他のブロックに比べて劣化度ポイントが相対的に小さいブロックをコピー元ブロック（第３領域）として選択する。更にプロセッサ２１５は、ブロック管理テーブル８００に基づいて、評価対象ブロック群以外の未書き込みブロックの中から、コピー先ブロック（第４領域）を選択する。その後、プロセッサ２１５は、コピー元ブロックのデータをコピー先ブロックへコピーし、コピー元ブロックを消去して未書き込みブロックとし、論物変換テーブル７００においてコピー元ブロックに対応付けられているＬＢＡ領域をコピー先ブロックに対応付ける。
【０１４９】
スタティック・ウェアレベリングにおいて、プロセッサ２１５は例えば、劣化度ポイントが最も小さいブロックをコピー元ブロックとして選択しても良いし、劣化度ポイントが、劣化度ポイントの平均値より所定値以上小さいブロックをコピー元ブロックとして選択しても良い。また、プロセッサ２１５は、劣化度ポイントが最も大きい未書き込みブロックをコピー先ブロックとして選択しても良いし、劣化度ポイントが、劣化度ポイントの平均値より所定値以上大きい未書き込みブロックをコピー先ブロックとして選択しても良い。
【０１５０】
本発明が適用されないＮＶＭモジュールが、消去回数に基づくウェアレベリングを行うとすると、品質が悪くても消去回数が小さいブロックを使うことになる。例えば、ブロックの劣化のばらつきにより、或るブロックの消去回数が消去回数上限値より十分小さくでも、そのブロックの障害ビット数が障害ビット数上限値に到達し、そのブロックが利用停止になる場合がある。これにより、予備領域が減少し、ＮＶＭモジュールの性能が低下する場合がある。また、ＦＭの装置寿命より短い期間で使用停止になってしまうことがある。
【０１５１】
本実施例の劣化度ポイントに基づくウェアレベリングによれば、品質の悪いブロックの消去回数に比べて、品質の良いブロックの消去回数を多くすることができる。これにより、予備領域の減少を抑え、ＮＶＭモジュール１１１の性能の低下を抑えることができる。また、これにより、品質の良いブロックを、消去回数上限値より多い消去回数まで利用できる場合がある。従って、劣化度ポイントに基づくウェアレベリングを行った場合の全てのブロックの平均の消去回数は、消去回数に基づくウェアレベリングを行った場合の全てのブロックの平均の消去回数より多くなり得る。
【０１５２】
（８）管理画面
【０１５３】
図１３は、管理画面を示す。管理装置１０４は、管理者からの指示に応じて管理画面１２００を表示する。管理画面１２００は、評価周期入力部１２０１と、劣化度分布表示部１２０２と、状況表示部１２０３とを有する。管理装置１０４は、ストレージ装置１０１内のＮＶＭモジュール１１１の複数のグループの夫々に対応して管理画面１２００を表示することができる。例えば管理装置１０４は、複数のＮＶＭモジュール１１１により構成されたＲＡＩＤ  ＧＲＯＵＰを単位として管理画面１２００を表示する。本発明はこの管理単位に限定されるものではない。管理画面１２００は、ＮＶＭモジュール１１１毎に評価周期を変更する画面であってもよいし、ＮＶＭモジュール１１１毎に劣化度ポイントの状況を表示する画面であってもよい。
【０１５４】
評価周期入力部１２０１は、劣化度定期評価処理の評価周期を入力する入力フィールドである。管理者により評価周期入力部１２０１に評価周期が入力されると、管理装置１０４は、対象となるＲＡＩＤ  Ｇｒｏｕｐを構成する全てのＮＶＭモジュール１１１へ評価周期を送信する。評価周期を受信したＮＶＭモジュール１１１は、評価周期が受信した値に変更する。
【０１５５】
劣化度分布表示部１２０２は、対象のＲＡＩＤ  Ｇｒｏｕｐを構成するＮＶＭモジュール１１１における全てのブロックの劣化度ポイント分布を示す。劣化度ポイント分布表示部１２０２は、表示フィールドとして、劣化度１２１１と、分布割合１２１２とを有する。劣化度１２１１の値の夫々は劣化度ポイントである。分布割合１２１２は、全てのブロック数に対して、劣化度１２１１の値を中心とする所定範囲に含まれる劣化度ポイントを有するブロックの割合を示す。分布割合１２１２は、対応する所定範囲に含まれる劣化度ポイントを有するブロック数であっても良い。管理者は劣化度分布表示部１２０２を見ることで、劣化度ポイントの状況を把握でき、管理者の想定以上の劣化が生じているかどうかを確認できる。
【０１５６】
状況表示部１２０３は、表示フィールドとして、劣化度平均１２１３と、推定残り書き換えデータ量１２１４とを有する。劣化度平均１２１３は、対象のＲＡＩＤ  Ｇｒｏｕｐを構成するＮＶＭモジュール１１１内の全てのブロックの劣化度ポイントの平均を示す。管理者は劣化度平均１２１３を見ることにより、対象のＲＡＩＤ  Ｇｒｏｕｐの残り寿命を推測できる。
【０１５７】
推定残り書き換えデータ量１２１４は、対象のＲＡＩＤ  Ｇｒｏｕｐを構成するＮＶＭモジュール１１１の残り書き換えデータ量の合計値を示す。推定残り書き換えデータ量１２１４の値は、各ブロックについて劣化度ポイント上限値から劣化度ポイントを減じた値の合計値であっても良いし、その合計値にブロックサイズを乗じた値であっても良い。管理者は推定残り書き換えデータ量１２１４を見ることにより、対象のＲＡＩＤ  Ｇｒｏｕｐに書き込み可能なデータ量を知ることができる。
【０１５８】
以上が管理画面である。
【０１５９】
以下、本実施例の効果について説明する。
【０１６０】
本実施例において、プロセッサ２１５は、上位装置からのアクセスを停止させずに、論物変換テーブル７００を変更することにより、評価対象ブロック群を上位装置から隠蔽し、評価対象ブロック群内の各ブロックの劣化度を調査する。プロセッサ２１５は、この動作を定期的に繰り返して全ての物理記憶領域又は所定の範囲の物理記憶領域（複数の特定物理記憶領域）の劣化度を稼働中に悉皆調査する。プロセッサ２１５は、この動作により所定の範囲のブロックの劣化度を漏れなく評価できる。
【０１６１】
また、評価より前の書き換え間隔により評価結果が強く影響を受ける。例えば、或るブロックの劣化度ポイントの評価直前の書き換え間隔が短かった場合、そのブロックの劣化度ポイントが極端に高くなる場合がある。そこで、劣化度ポイントの評価前に、プロセッサ２１５は、固定データを書き込み、待機時間だけ放置した後、消去を実施する。この動作により、評価前の書き換え間隔の影響を軽減し、劣化度を安定して評価できる。
【０１６２】
その後、プロセッサ２１５は、障害ビットが生じやすいデータを記録し、書き込み直後の障害ビット数を取得する。その後、プロセッサ２１５は、ＦＭ２２０の環境温度に応じて増減する放置時間を経た後、再度、障害ビット数を取得する。その後、プロセッサ２１５は、書き込み直後の障害ビット数と放置時間後の障害ビット数を比較することで、障害ビットの増加傾向を把握し、この増加傾向を基にブロックの劣化度を推定する。この動作により、障害ビットの増加傾向に基づいた劣化度を管理でき、各ブロックを劣化度に応じた書き換え回数まで利用できる。
【０１６３】
プロセッサ２１５は、障害ビットの増加傾向に基づいて劣化度ポイントを決定し、この劣化度ポイントが平準化されるように、劣化度ポイントの相対的に小さいブロックを優先的に利用するように制御する。これにより、品質の良いブロックに相対的に多くの消去が実施され、品質の悪いブロックに相対的に少ない消去が実施されることになり、装置の信頼性を向上できる。
【０１６４】
従来、先天的に品質の悪いブロックや最も悪い利用環境で劣化したブロックを想定して消去回数上限値を一律に定め、品質が良く劣化しにくいブロックについても消去回数が消去回数上限値を超過すれば利用不可としていた。そのため、ＮＶＭモジュール全体で実施可能な消去回数は、実力より少なくなる。しかし、本実施例のように、劣化度ポイントの上限値によってブロックの利用可否を判断することで、品質の良いメモリに対してはより多くの消去を許容する制御が可能となることから、ＮＶＭモジュール全体としてより多くの消去を実施することができ、ＮＶＭモジュールの装置寿命を延ばすことができる。
【０１６５】
以上の実施例で説明された技術は、例えば、次のように表現することができる。
（表現１）
複数の物理記憶領域を有する不揮発性メモリと、
前記不揮発性メモリに接続されたコントローラと、
を備え、
前記コントローラは、前記複数の物理記憶領域の中の複数の特定物理記憶領域の一部ずつの評価処理を、前記複数の特定物理記憶領域にわたって行うことにより、前記複数の特定物理記憶領域の夫々の劣化度を算出し、前記算出された劣化度に基づいて、対応する物理記憶領域を利用するか否かを判定し、
前記評価処理において前記コントローラは、予め定められた物理記憶領域の順序に従って、前記複数の特定物理記憶領域の一部を物理記憶領域群として選択し、前記物理記憶領域群内のデータを移動させ、前記物理記憶領域群を消去し、前記物理記憶領域群へ予め定められた評価用データを書き込み、前記評価用データの書き込みから、記憶された放置時間の経過後、前記物理記憶領域群から前記評価用データを読み出し、前記読み出された評価用データに基づいて、前記物理記憶領域群の中の各物理記憶領域である指定領域の劣化度を算出する、
記憶装置。
（表現２）
前記コントローラは、前記複数の特定物理記憶領域にわたる前記評価処理を繰り返す、
表現１に記載の記憶装置。
（表現３）
前記コントローラは、前記複数の特定物理記憶領域の中から、予め定められた順序に従って、記憶された物理記憶領域数の物理記憶領域を前記物理記憶領域群として選択する、
表現２に記載の記憶装置。
（表現４）
前記コントローラは、前記放置時間の経過後の前記評価用データの読み出し結果に基づいて、前記指定領域の障害ビット数である放置後障害ビット数を測定し、前記放置後障害ビット数に基づいて、前記指定領域の劣化度を算出する、
表現３に記載の記憶装置。
（表現５）
前記コントローラは、ＩＯ要求により指定される論理アドレスを、前記複数の特定物理記憶領域の中の物理アドレスに対応付ける対応情報を記憶し、
前記物理記憶領域群の消去の前、前記コントローラは、前記物理記憶領域群の中に有効データを格納する領域である有効領域がある場合、前記複数の特定物理記憶領域の中で前記物理記憶領域群の外の未書き込みの物理記憶領域を代替領域として選択し、前記有効領域内の有効データを前記代替領域へコピーし、前記対応情報において前記有効領域に対応付けられている論理アドレスを、前記代替領域に対応付ける、
表現４に記載の記憶装置。
（表現６）
前記評価用データの書き込みの後、且つ前記放置時間の経過前、前記コントローラは、前記物理記憶領域群から前記評価用データを読み出し、前記放置時間の経過前の前記評価用データの読み出し結果に基づいて、前記指定領域の障害ビット数である記録後障害ビット数を測定し、前記放置後障害ビット数から前記記録後障害ビット数を減じた値を障害ビット増加量として算出し、前記障害ビット増加量に基づいて、前記指定領域の劣化度を算出する、
表現５に記載の記憶装置。
（表現７）
前記指定領域の劣化度は、前記指定領域の劣化を消去回数に換算した値であり、
前記コントローラは、前記障害ビット増加量と前記指定領域の劣化度との関係を示す関係情報を記憶し、前記関係情報に基づいて、前記障害ビット増加量を前記指定領域の劣化度に変換する、
表現６に記載の記憶装置。
（表現８）
前記物理記憶領域群の消去の後、且つ前記評価用データの書き込みの前、前記コントローラは、予め定められた固定データを前記物理記憶領域群へ書き込み、予め定められた待機時間の経過後に、前記物理記憶領域群を消去する、
表現１乃至７の何れか一項に記載の記憶装置。
（表現９）
前記コントローラは、前記不揮発性メモリの温度を測定し、前記温度に基づいて前記放置時間を変更する、
表現６に記載の記憶装置。
（表現１０）
前記コントローラは、リード要求により指定されたデータを前記不揮発性メモリから読み出す時に用いられる読出し電圧より高い読出し電圧を用いて、前記指定領域から前記評価用データを読み出す、
表現１乃至７の何れか一項に記載の記憶装置。
（表現１１）
前記評価用データの書き込みにより生じる放置後障害ビット数は、ランダムデータの書き込みにより生じる放置後障害ビット数より高い、
表現４に記載の記憶装置。
（表現１２）
前記コントローラは、前記複数の特定物理記憶領域の中で有効データを格納する物理記憶領域を第１領域として選択し、前記複数の特定物理記憶領域の中で前記物理記憶領域群の外の未書き込みの物理記憶領域の中から、別の物理記憶領域の劣化度より低い劣化度を有する物理記憶領域を第２領域として選択し、前記第１領域内のデータを前記第２領域へコピーし、前記第１領域を消去し、前記対応情報において前記第１領域に対応付けられている論理アドレスを、前記第２領域に対応付ける、
表現５に記載の記憶装置。
（表現１３）
前記コントローラは、前記複数の特定物理記憶領域の中で有効データを格納する物理記憶領域の中から、別の物理記憶領域の劣化度より低い劣化度を有する物理記憶領域を第３領域として選択し、前記複数の特定物理記憶領域の中で前記物理記憶領域群の外の未書き込みの物理記憶領域を第４領域として選択し、前記第３領域内のデータを、前記第４領域へコピーし、前記第３領域を消去し、前記対応情報において前記第３領域に対応付けられている論理アドレスを、前記第４領域に対応付ける、
表現５に記載の記憶装置。
（表現１４）
前記複数の特定物理記憶領域の夫々は、所定サイズの物理ブロックであり、
前記コントローラは、前記物理ブロック単位でデータを消去する、
表現１乃至７の何れか一項に記載の記憶装置。
（表現１５）
複数の物理記憶領域を有する不揮発性メモリと、前記不揮発性メモリに接続されたコントローラとを有する記憶装置を制御するための記憶装置制御方法であって、
前記コントローラが、
前記複数の物理記憶領域の中の複数の特定物理記憶領域の一部ずつの評価処理を、前記複数の特定物理記憶領域にわたって行うことにより、前記複数の特定物理記憶領域の夫々の劣化度を算出し、
前記算出された劣化度に基づいて、対応する物理記憶領域を利用するか否かを判定する、
ことを備え、
前記評価処理は、
前記コントローラが、
予め定められた物理記憶領域の順序に従って、前記複数の特定物理記憶領域の一部を物理記憶領域群として選択し、
前記物理記憶領域群内のデータを移動させ、
前記物理記憶領域群を消去し、
前記物理記憶領域群へ予め定められた評価用データを書き込み、
前記評価用データの書き込みから、記憶された放置時間の経過後、
前記物理記憶領域群から前記評価用データを読み出し、
前記読み出された評価用データに基づいて、前記物理記憶領域群の中の各物理記憶領域である指定領域の劣化度を算出する、
ことを有する記憶装置制御方法。
【０１６６】
以上の表現における用語について説明する。記憶装置は、ＮＶＭモジュール１１１等に対応する。物理記憶領域は、物理ブロック等に対応する。不揮発性メモリは、ＦＭ２２０等に対応する。コントローラは、ＦＭコントローラ２１０等に対応する。劣化度は、劣化度ポイント等に対応する。予め定められた順序は、連続番号等に対応する。物理記憶領域群は、評価対象ブロック群等に対応する。物理記憶領域数は、同時評価ブロック数等に対応する。対応情報は、論物変換テーブル７００等に対応する。記録後障害ビット数は、第１障害ビット数等に対応する。放置後障害ビット数は、第２障害ビット数等に対応する。関係情報は、劣化度ポイント推定テーブル１１００等に対応する。
【符号の説明】
【０１６７】
１０１：ストレージ装置、  １０３：ホスト、  １０４：管理装置、  １０７：ディスクインターフェース、  １１０：ストレージコントローラ、  １１１：ＮＶＭモジュール、  １１８：管理情報、  １２１：プロセッサ、  １２２：内部スイッチ、  １２３：ディスクインターフェース、  １２４：ホストインターフェース、  １２５：メモリ、  ２１０：ＦＭコントローラ、  ２１１：ディスクインターフェース、  ２１３：ＲＡＭ、  ２１４：スイッチ、  ２１５：プロセッサ、  ２１６：データバッファ、  ２１７：ＦＭインターフェース、  ２２０：ＦＭ、  ７００：論物変換テーブル、  ８００：ブロック管理テーブル、  １１００：劣化度ポイント推定テーブル、  １２００：管理画面
【図１】
0005956675.tif 000002
【図２】
0005956675.tif 000003
【図３】
0005956675.tif 000004
【図４】
0005956675.tif 000005
【図５】
0005956675.tif 000006
【図６】
0005956675.tif 000007
【図７】
0005956675.tif 000008
【図８】
0005956675.tif 000009
【図９】
0005956675.tif 000010
【図１０】
0005956675.tif 000011
【図１１】
0005956675.tif 000012
【図１２】
0005956675.tif 000013
【図１３】
0005956675.tif 000014