(57)【特許請求の範囲】
【請求項１】
データ書換のためにブロックごとにデータを消去する不揮発性メモリを記憶媒体とし、前記不揮発性メモリにデータを入出力する制御部を備えるストレージ装置において、
前記不揮発性メモリの記憶領域は、データの書込並びに記憶しているデータの消去及び書換ができる書換型領域と、データの１回書込ができ記憶しているデータの消去及び書換ができない追記型領域と、を含み、
前記ブロックは、データの書込単位であるページを複数有し、
前記追記型領域は、データが書き込まれていないページを一つ以上含む書き込みが完了していない追記型領域又はすべてのページにデータが書き込まれている書き込みが完了している追記型領域のどちらかであり、
前記ブロックの属性は、当該ブロックが書換型領域、書き込みが完了していない追記型領域又は書き込みが完了している追記型領域のいずれに属するかを示し、
前記制御部は、
前記ブロックの属性に基づいて、前記書換型領域に属するブロックを判定し、
前記判定した書換型領域に属するブロックに対してのみ、ウエアレベリング処理及びリクラメーション処理を行うことを特徴とするストレージ装置。
【請求項２】
前記ブロックは、当該ブロックの属性を所定の領域に記憶することを特徴とする請求項１に記載のストレージ装置。
【請求項３】
前記制御部は、書き込みが完了している追記型領域に属するブロックに対するデータの書込要求を受けると、データを書き込まずに、エラーを通知することを特徴とする請求項１に記載のストレージ装置。
【請求項４】
前記制御部は、
書き込みが完了していない追記型領域に属するブロックに対するデータの書込要求を受けると、データを書き込むページの属性に基づいて、当該ページにデータが書き込まれているか否かを判定し、
当該ページにデータが書き込まれていなければ、当該ページにデータを書き込み、当該ページを含むブロックの属性を書き込みが完了していない追記型領域から書き込みが完了している追記型領域へ変更し、
当該ページにデータが書き込まれていれば、データを書き込まずに、エラーを通知することを特徴とする請求項１に記載のストレージ装置。
【請求項５】
前記制御部は、前記リクラメーション処理を行ったブロックの属性を、書換型領域から書き込みが完了していない追記型領域へ変更することを特徴とする請求項１に記載のストレージ装置。
【請求項６】
前記ブロックは、当該ブロックのデータの消去回数を記憶し、
前記制御部は、前記消去回数の多いブロックを優先して、前記リクラメーション処理を行ったブロックの属性を、書換型領域から追記型領域へ変更することを特徴とする請求項５に記載のストレージ装置。
【請求項７】
前記制御部は、
書換型領域に属するブロックに対するデータの書込要求を受けると、当該ブロックにデータを書き込み、
当該ブロックの属性を、書換型領域から追記型領域へ変更することを特徴とする請求項１に記載のストレージ装置。
【請求項８】
前記ブロックは、記憶しているデータの保持期限情報を記憶することを特徴とする請求項１に記載のストレージ装置。
【請求項９】
前記制御部は、データの書込要求を受けると、データをブロックに書き込むと共に、当該データの保持期限情報を当該ブロックに書き込むことを特徴とする請求項８に記載のストレージ装置。
【請求項１０】
前記不揮発性メモリの記憶領域は、さらに、属性が決まっていない未使用領域を含み、
前記制御部は、
前記保持期限情報に基づく保持期限を過ぎたデータを記憶しているブロックから、当該データを消去し、
当該ブロックの属性を、追記型領域から未使用領域へ変更することを特徴とする請求項８に記載のストレージ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データを記憶するストレージ装置に関し、特に、ブロックごとにデータを消去する不揮発性半導体メモリを記憶媒体とする技術に関する。
【背景技術】
【０００２】
近年、データを長期的かつ安全に記憶するストレージ装置が必要とされている。例えば、金融機関及び医療機関などの文書データは、消去及び書き換えが不可能な追記型（ライトワンス型）の記憶装置での記憶が法律によって義務づけられている。
【０００３】
ストレージ装置は、一般的に、ランダムアクセス可能な不揮発性記憶媒体を備える。ランダムアクセス可能な不揮発性記憶媒体は、例えば、磁気ディスク又は光ディスク等である。また、現在主流ストレージ装置は、小型ディスクドライブを多数備える。
【０００４】
また、半導体技術の進歩に伴って、一括消去可能な不揮発性半導体メモリが開発されている。一括消去可能な不揮発性半導体メモリは、例えば、フラッシュメモリである。フラッシュメモリを記憶媒体とするストレージ装置は、小型ディスクドライブを多数備えるストレージ装置に比べ、寿命、省電力及びアクセス時間等に優れている。
【０００５】
ここで、フラッシュメモリについて説明する。フラッシュメモリは、特性上、データを直接書き換えることができない。つまり、フラッシュメモリは、記憶しているデータを書き換える場合、記憶している有効なデータを退避させる。次に、記憶しているデータをブロック単位で消去する。そして、データを消去したブロックにデータを書き込む。なお、ブロックは、データを一括消去する単位の記憶領域である。
【０００６】
具体的には、フラッシュメモリは、「１」を「０」に書き換えることはできる。しかし、「０」を「１」に書き換えることができない。そこで、フラッシュメモリは、データの書き換え時に、ブロックの全体を消去する。
【０００７】
フラッシュメモリは、データを読み出す時間に比べて、データを書き込む時間及びデータを消去する時間が長い。そのため、フラッシュメモリは、データを書き換える場合、データの書き込み及びデータの消去を伴うので、動作が絶望的に遅くなる。
【０００８】
この問題点を解決する記憶システムが知られている（例えば、特許文献１参照。）。この従来技術の記憶システムは、ホストＣＰＵと外部記憶装置のアドレス関係に柔軟性を与え、ホストＣＰＵのコマンドの持つ論理アドレスによって半導体メモリの物理アドレスが一方的に決定されることのないようなアドレス制御方式を導入した。
【特許文献１】特開平５−２７９２４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
この従来技術の記憶システムは、リクラメーション処理又はウエアレベリング処理を行うと、ブロック間をデータが移動してしまう。よって、当該記憶システムは、データの移動中に誤動作又は停電等の障害が発生すると、データを消失する可能性がある。
【００１０】
また、従来技術の記憶システムは、データを消去する際に、当該データを記憶している物理ブロックに無効フラグを立てるだけである。つまり、消去されたデータが、実際には記憶システムから消去されずに残っているので、読み出される可能性がある。そのため、当該記憶システムは、情報漏洩防止の観点から安全とは言えない。
【００１１】
また、従来技術の記憶システムは、追記型領域と書換型領域の領域割り当てを考慮していない。そのため、当該記憶システムは、追記型領域の容量が不足すると、追記型領域での記憶が義務付けられているデータを記憶できなくなる。
【００１２】
更に、従来技術の記憶システムは、データの保持期限を考慮しない。よって、当該記憶システムは、保持期限を過ぎたデータを消去しないので、不要なデータを永久に記憶している。
【００１３】
本発明は、前述した問題点に鑑みてなされたものであり、追記型領域で記憶しているデータの消失を防ぐストレージ装置を提供することを目的とする。
【課題を解決するための手段】
【００１４】
本発明は、データ書換のためにブロックごとにデータを消去する不揮発性メモリを記憶媒体とし、前記不揮発性メモリにデータを入出力する制御部を備えるストレージ装置において、前記不揮発性メモリの記憶領域は、データの書込並びに記憶しているデータの消去及び書換ができる書換型領域と、データの１回書込ができ記憶しているデータの消去及び書換ができない追記型領域と、を含み、前記ブロックは、データの書込単位であるページを複数有し、前記追記型領域は、データが書き込まれていないページを一つ以上含む書き込みが完了していない追記型領域又はすべてのページにデータが書き込まれている書き込みが完了している追記型領域のどちらかであり、前記ブロックの属性は、当該ブロックが書換型領域、書き込みが完了していない追記型領域又は書き込みが完了している追記型領域のいずれに属するかを示し、前記制御部は、前記ブロックの属性に基づいて、前記書換型領域に属するブロックを判定し、前記判定した書換型領域に属するブロックに対してのみ、ウエアレベリング処理及びリクラメーション処理を行うことを特徴とする。
【発明の効果】
【００１５】
本発明によれば、追記型領域で記憶しているデータの消失を防ぐことができる。
【発明を実施するための最良の形態】
【００１６】
以下、本発明の実施の形態について図面を参照して説明する。
【００１７】
（第１の実施の形態）
図１は、第１の実施の形態のストレージ装置のブロック図である。
【００１８】
ストレージ装置は、ストレージコントローラＳＣ及びフラッシュメモリ・モジュールＦＭ０、ＦＭ１、ＦＭ２、ＦＭ３を備える。
【００１９】
ストレージコントローラＳＣは、チャネルアダプタＣＡ０、ＣＡ１、キャッシュメモリＣＭ０、ＣＭ１、ストレージアダプタＳＡ０、ＳＡ１及び相互接続網ＮＷ０、ＮＷ１を備える。
【００２０】
なお、チャネルアダプタＣＡ０、ＣＡ１、キャッシュメモリＣＭ０、ＣＭ１及びストレージアダプタＳＡ０、ＳＡ１は、二つずつを図示しているが、いくつ備えられていてもよい。
【００２１】
相互接続網ＮＷ０及びＮＷ１は、例えば、スイッチ等であり、ストレージコントローラＳＣを構成する装置を相互に接続する。具体的には、相互接続網ＮＷ０及びＮＷ１は、チャネルアダプタＣＡ０、キャッシュメモリＣＭ０及びストレージアダプタＳＡ０を相互に接続する。同様に、相互接続網ＮＷ０、ＮＷ１は、チャネルアダプタＣＡ１、キャッシュメモリＣＭ１及びストレージアダプタＳＡ１を相互に接続する。
【００２２】
チャネルアダプタＣＡ０は、図２で後述するが、チャネルＣ００、Ｃ０１、Ｃ０２、Ｃ０３を介して、外部の上位装置（図示省略）に接続されている。同様に、チャネルアダプタＣＡ１は、チャネルＣ１０、Ｃ１１、Ｃ１２、Ｃ１３を介して、外部の上位装置（図示省略）に接続されている。なお、上位装置は、本実施の形態のストレージ装置にデータを読み書きする計算機である。
【００２３】
キャッシュメモリＣＭ０は、チャネルアダプタＣＡ０及びストレージアダプタＳＡ０から受信したデータを一時的に記憶する。同様に、キャッシュメモリＣＭ１は、チャネルアダプタＣＡ１及びストレージアダプタＳＡ１から受信したデータを一時的に記憶する。
【００２４】
ストレージアダプタＳＡ０は、図３で後述するが、フラッシュメモリ・モジュールＦＭ０等に接続されている。具体的には、ストレージアダプタＳＡ０は、チャネルＤ００を介して、フラッシュメモリ・モジュールＦＭ０に接続されている。また、ストレージアダプタＳＡ０は、チャネルＤ０１を介して、フラッシュメモリ・モジュールＦＭ１に接続されている。また、ストレージアダプタＳＡ０は、チャネルＤ０２を介して、フラッシュメモリ・モジュールＦＭ２に接続されている。また、ストレージアダプタＳＡ０は、チャネルＤ０３を介して、フラッシュメモリ・モジュールＦＭ３に接続されている。
【００２５】
同様に、ストレージアダプタＳＡ１は、フラッシュメモリ・モジュールＦＭ０等に接続されている。具体的には、ストレージアダプタＳＡ１は、チャネルＤ１０を介して、フラッシュメモリ・モジュールＦＭ０に接続されている。また、ストレージアダプタＳＡ１は、チャネルＤ１１を介して、フラッシュメモリ・モジュールＦＭ１に接続されている。また、ストレージアダプタＳＡ１は、チャネルＤ１２を介して、フラッシュメモリ・モジュールＦＭ２に接続されている。また、ストレージアダプタＳＡ１は、チャネルＤ１３を介して、フラッシュメモリ・モジュールＦＭ３に接続されている。
【００２６】
チャネルアダプタＣＡ０、ＣＡ１及びストレージアダプタＳＡ０、ＳＡ１は、保守端末ＳＶＰに接続されている。保守端末ＳＶＰは、ストレージ装置の管理者から入力された設定情報を、チャネルアダプタＣＡ０、ＣＡ１及び／又はストレージアダプタＳＡ０、ＳＡ１に送信する。
【００２７】
フラッシュメモリ・モジュールＦＭ０は、図４で後述するが、メモリコントローラＭＣ０及びフラッシュメモリＭＥＭ０を備える。同様に、フラッシュメモリ・モジュールＦＭ１は、メモリコントローラＭＣ１及びフラッシュメモリＭＥＭ１を備える。また、フラッシュメモリ・モジュールＦＭ２は、メモリコントローラＭＣ２及びフラッシュメモリＭＥＭ２を備える。また、フラッシュメモリ・モジュールＦＭ３は、メモリコントローラＭＣ３及びフラッシュメモリＭＥＭ３を備える。
【００２８】
フラッシュメモリＭＥＭ０、ＭＥＭ１、ＭＥＭ２、ＭＥＭ３は、データを記憶する。メモリコントローラＭＣ０、ＭＣ１、ＭＣ２、ＭＣ３は、フラッシュメモリＭＥＭ０、ＭＥＭ１、ＭＥＭ２、ＭＥＭ３に対して、データを読み書きする。
【００２９】
なお、ストレージ装置は、ストレージアダプタＳＡ０及びチャネルアダプタＣＡ０に代わって、一つのアダプタを備えていても良い。この場合、当該アダプタが、ストレージアダプタＳＡ０及びチャネルアダプタＣＡ０の処理を行う。
【００３０】
図２は、第１の実施の形態のチャネルアダプタＣＡ０のブロック図である。
【００３１】
チャネルアダプタＣＡ０は、ホストチャネル・インターフェイス２１、キャッシュメモリ・インターフェイス２２、ネットワーク・インターフェイス２３、プロセッサ２４、ローカルメモリ２５及びプロセッサ周辺制御部２６を備える。
【００３２】
ホストチャネル・インタフェース２１は、チャネルＣ００、Ｃ０１、Ｃ０２、Ｃ０３を介して、外部の上位装置（図示省略）と接続するインタフェースである。また、ホストチャネル・インターフェイス２１は、チャネルＣ００、Ｃ０１、Ｃ０２、Ｃ０３上のデータ転送プロトコルと、ストレージコントローラＳＣの内部のデータ転送プロトコルとを相互に変換する。
【００３３】
キャッシュメモリ・インターフェイス２２は、相互結合網ＮＷ０、ＮＷ１と接続するインタフェースである。ネットワーク・インタフェース２３は、保守端末ＳＶＰと接続するインタフェースである。
【００３４】
なお、ホストチャネル・インターフェイス２１とキャッシュメモリ・インターフェイス２２とは、信号線２７によって接続されている。
【００３５】
プロセッサ２４は、ローカルメモリ２５に記憶されているプログラムを実行することによって、各種処理を行う。具体的には、プロセッサ２４は、上位装置と相互結合網ＮＷ０、ＮＷ１との間のデータ転送を制御する。
【００３６】
ローカルメモリ２５は、プロセッサ２４によって実行されるプログラムを記憶する。また、ローカルメモリ２５は、プロセッサ２４によって参照されるテーブルを記憶する。なお、当該テーブルは、管理者によって設定又は変更される。
【００３７】
この場合、管理者は、テーブルの設定又はテーブルの変更に関する情報を、保守端末ＳＶＰに入力する。保守端末ＳＶＰは、入力された情報をネットワーク・インタフェース２３を介して、プロセッサ２４に送信する。プロセッサ２４は、受信した情報に基づいて、テーブルを作成又は変更する。そして、プロセッサ２４は、当該テーブルを、ローカルメモリ２５に格納する。
【００３８】
プロセッサ周辺制御部２６は、ホストチャネル・インターフェイス２１、キャッシュメモリ・インターフェイス２２、ネットワーク・インターフェイス２３、プロセッサ２４及びローカルメモリ２５間のデータの送受信を制御する。プロセッサ周辺制御部２６は、例えば、チップセット等である。
【００３９】
なお、チャネルアダプタＣＡ１も、チャネルアダプタＣＡ０と同一の構成である。よって、説明を省略する。
【００４０】
図３は、第１の実施の形態のストレージアダプタＳＡ０のブロック図である。
【００４１】
ストレージアダプタＳＡ０は、キャッシュメモリ・インターフェイス３１、ストレージチャネル・インターフェイス３２、ネットワーク・インターフェイス３３、プロセッサ３４、ローカルメモリ３５及びプロセッサ周辺制御部３６を備える。
【００４２】
キャッシュメモリ・インターフェイス３１は、相互結合網ＮＷ０、ＮＷ１と接続するインタフェースである。
【００４３】
ストレージチャネル・インターフェイス３２は、チャネルＤ００、Ｄ０１、Ｄ０２、Ｄ０３と接続するインタフェースである。また、ストレージチャネル・インターフェイス３２は、チャネルＤ００、Ｄ０１、Ｄ０２、Ｄ０３上のデータ転送プロトコルと、ストレージコントローラＳＣの内部のデータ転送プロトコルとを相互に変換する。
【００４４】
なお、キャッシュメモリ・インターフェイス３１とストレージチャネル・インターフェイス３２とは、信号線３７によって接続されている。
【００４５】
ネットワーク・インターフェイス３３は、保守端末ＳＶＰと接続するインタフェースである。
【００４６】
プロセッサ３４は、ローカルメモリ３５に記憶されているプログラムを実行することによって、各種処理を行う。
【００４７】
ローカルメモリ３５は、プロセッサ３４によって実行されるプログラムを記憶する。また、ローカルメモリ３５は、プロセッサ３４によって参照されるテーブルを記憶する。なお、当該テーブルは、管理者によって設定又は変更される。
【００４８】
この場合、管理者は、テーブルの設定又はテーブルの変更に関する情報を、保守端末ＳＶＰに入力する。保守端末ＳＶＰは、入力された情報をネットワーク・インタフェース３３を介して、プロセッサ３４に送信する。プロセッサ３４は、受信した情報に基づいて、テーブルを作成又は変更する。そして、プロセッサ３４は、当該テーブルを、ローカルメモリ３５に格納する。
【００４９】
プロセッサ周辺制御部３６は、キャッシュメモリ・インターフェイス３１、ストレージチャネル・インターフェイス３２、ネットワーク・インターフェイス３３、プロセッサ３４及びローカルメモリ３５間のデータの送受信を制御する。プロセッサ周辺制御部２６は、例えば、チップセット等である。
【００５０】
なお、ストレージアダプタＳＡ１も、ストレージアダプタＳＡ０と同一の構成である。よって、説明を省略する。
【００５１】
図４は、第１の実施の形態のフラッシュメモリ・モジュールＦＭ０のブロック図である。
【００５２】
フラッシュメモリ・モジュールＦＭ０は、メモリコントローラＭＣ０及びフラッシュメモリＭＥＭ０を備える。
【００５３】
メモリコントローラＭＣ０は、プロセッサ４０１、インターフェイス部４０２、データ転送部４０３及びメモリ４０４を備える。
【００５４】
フラッシュメモリＭＥＭ０は、複数のフラッシュメモリ・チップ４０５を備える。フラッシュメモリ・チップ４０５は、複数のブロック４０６を含み、データを記憶する。ブロック４０６は、図５で後述するが、メモリコントローラＭＣ０がデータを消去する単位である。
【００５５】
なお、ブロック４０６は、有効ブロック又は無効ブロックのいずれかに分類される。有効ブロックは、データを記憶可能なブロックである。また、無効ブロックは、当該ブロックの記憶素子が壊れている等の理由によって、物理的に使用できないブロックである。つまり、フラッシュメモリモジュールＦＭ０は、有効ブロックにだけデータを記憶し、無効ブロックにはデータを記憶しない。
【００５６】
更に、有効ブロックは、未使用ブロック、追記型ブロック又は書換型ブロックに分類される。未使用ブロックは、追記型ブロックにも書換型ブロックにも割り当てられずに、データを記憶していないブロックである。追記型ブロック（ライトワンスブロック）は、データの消去及びデータの書き換えができないブロックである。書換型ブロックは、データの消去及びデータの書き換えが可能なブロックである。
【００５７】
ブロック４０６は、複数のページを含む。ページは、図５で後述するが、メモリコントローラＭＣ０がデータを書き込む単位である。
【００５８】
なお、ページは、有効ページ、無効ページ、未使用ページ又は不良ページのいずれかに分類される。有効ページは、有効なデータを記憶しているページである。無効ページは、無効なデータを記憶しているページである。未使用ページは、データを記憶していないページである。不良ページは、当該ページの記憶素子が壊れている等の理由によって、物理的に使用できないページである。
【００５９】
インターフェイス部４０２は、チャネルＤ００を介して、ストレージコントローラＳＣ内のストレージアダプタＳＡ０に接続されている。また、インターフェイス部４０２は、チャネルＤ１０を介して、ストレージコントローラＳＣ内のストレージアダプタＳＡ１に接続されている。
【００６０】
インターフェイス部４０２は、ストレージアダプタＳＡ０、ＳＡ１からの命令を実行する。ストレージアダプタＳＡ０、ＳＡ１からの命令は、例えば、ＳＣＳＩコマンドである。
【００６１】
具体的には、インタフェース部４０２は、ストレージアダプタＳＡ０、ＳＡ１からデータを受信する。そして、インタフェース部４０２は、受信したデータをメモリ４０４に格納する。また、インタフェース部４０２は、メモリ４０４に格納されているデータを、ストレージアダプタＳＡ０、ＳＡ１へ送信する。
【００６２】
メモリ４０４は、例えば、ダイナミック型ランダムアクセスメモリであり、高速に読み書きできる。メモリ４０４は、インタフェース部４０２が送受信するデータを一時的に記憶する。また、メモリ４０４は、プロセッサ４０１によって実行されるプログラムを記憶する。また、メモリ４０４は、プロセッサ４０１によって参照されるテーブルを記憶する。当該テーブルは、例えば、フラッシュメモリＭＥＭ０の論理アドレスと物理アドレスとの変換テーブルである。
【００６３】
データ転送部４０３は、例えば、スイッチであり、プロセッサ４０１、インターフェイス部４０２、メモリ４０４及びフラッシュメモリＭＥＭ０を相互に接続し。それらの間のデータ転送を制御する。
【００６４】
プロセッサ４０１は、メモリ４０４に記憶されているプログラムを実行することによって、各種処理を行う。例えば、プロセッサ４０１は、メモリ４０４に記憶されているフラッシュメモリの論理アドレスとフラッシュメモリの物理アドレスとの変換テーブルを参照して、フラッシュメモリＭＥＭ０にデータを読み書きする。また、プロセッサ４０１は、リクラメーション処理（ブロック再生処理）及びウエアレベリング処理（消去回数均等化処理）を行う。
【００６５】
リクラメーション処理は、ブロック４０６内の無効ページを未使用ページに再生する処理である。具体的には、プロセッサ４０１は、リクラメーション処理の対象となるブロック（対象ブロック）４０６内の有効ページに記憶されているデータを、未使用ブロックへ複写する。そして、プロセッサ４０１は、データを複写した未使用ブロックの論理ブロック番号を、対象ブロックの論理ブロック番号に変更する。そして、対象ブロックのデータをすべて消去し、リクラメーション処理を完了する。
【００６６】
例えば、プロセッサ４０１がブロック４０６にデータを書き込むと、ブロック４０６内の未使用ページが少なくなる。そして、ブロック４０６内の未使用ページが足りなくなると、プロセッサ４０１は、当該ブロック４０６へデータを書き込めなくなる。そこで、プロセッサ４０１は、当該ブロック４０６をリクラメーションすることによって、無効ページを未使用ページに再生する。
【００６７】
また、ウェアレベリング処理は、それぞれのブロック４０６のデータ消去回数を均等化する処理である。これによって、フラッシュメモリＭＥＭ０の寿命を長くできる。なぜなら、フラッシュメモリＭＥＭ０は、データの消去回数が多くなると、寿命になるからである。フラッシュメモリＭＥＭ０は、一般的に、約十万回のデータの消去が保証されている。
【００６８】
なお、フラッシュメモリ・モジュールＦＭ１、ＦＭ２及びＦＭ３も、フラッシュメモリ・モジュールＦＭ０と同一の構成である。よって、説明を省略する。
【００６９】
図５は、第１の実施の形態のフラッシュメモリ・モジュールＦＭ０のブロック４０６の説明図である。
【００７０】
ブロック４０６は、複数のページ５０１を含む。ブロック４０６は、一般的に、数十程度のページ５０１（例えば、３２ページ、６４ページ等）を含む。
【００７１】
ページ５０１は、メモリコントローラＭＣ０等がデータを書き込む単位である。例えば、ＮＡＮＤ型フラッシュメモリでは、メモリコントローラＭＣ０等は、２０〜３０μｓ弱／ページの速度でデータを読み出し、０.２〜０.３ｍｓ／ページの速度でデータを書き込む。また、メモリコントローラＭＣ０等は、２〜４ｍｓ／ブロックの速度でデータを消去する。
【００７２】
ページ５０１は、データ部５０２及び冗長部５０３を含む。ページ５０１は、例えば、５１２バイトのデータ部５０２及び１６バイトの冗長部５０３を含む。
【００７３】
データ部５０２は、通常のデータを記憶する。
【００７４】
冗長部５０３は、当該ページ５０１の管理情報及びエラー訂正情報を記憶する。
【００７５】
管理情報は、オフセットアドレス及びページステータスを含む。なお、オフセットアドレスは、当該ページ５０１が属するブロック４０６内における相対的なアドレスである。また、ページステータスは、当該ページ５０１が有効ページ、無効ページ、未使用ページ又は処理中のページのいずれであるかを示す。
【００７６】
エラー訂正情報は、当該ページ５０１のエラーを検出及び訂正するための情報であり、例えば、ハミングコードである。
【００７７】
また、ブロック４０６は、ブロック管理情報５２０を所定の領域に有する。所定の領域は、例えば、当該ブロック４０６のアドレス空間の先頭から予め定められた長さの領域とする。ブロック管理情報５２０は、論理ブロック番号領域５１０、有効フラグ領域５１１、消去回数領域５１２及び書込制御情報領域５１３を含む。
【００７８】
論理ブロック番号領域５１０は、当該ブロック４０６の論理ブロック番号を記憶する。論理ブロック番号は、ストレージコントローラＳＣが当該ブロック４０６を一意に識別する識別子である。
【００７９】
なお、メモリコントローラＭＣ０等は、リクラメーション処理又はウエアレベリング処理においてデータを移動すると、移動元のブロック４０６の論理ブロック番号領域５１０に格納されている値を、移動先のブロック４０６の論理ブロック番号領域５１０へ格納する。
【００８０】
有効フラグ領域５１１は、当該ブロック４０６が有効ブロック又は無効ブロックのいずれであるかを記憶する。メモリーコントローラＭＣ０等は、不良ページを見つけると、当該不良ページを含むブロック４０６の有効フラグ領域５１１に無効ブロックを示すフラグを格納する。
【００８１】
消去回数領域５１２は、当該ブロック４０６のデータ消去回数を記憶する。メモリコントローラＭＣ０等は、ブロック４０６に記憶されているデータを消去すると、当該ブロックの消去回数領域５１２に格納されている値を増加させる。
【００８２】
書込制御情報領域５１３は、当該ブロック４０６の書込制御情報を記憶する。書込制御情報は、当該ブロック４０６の属性である。
【００８３】
本実施の形態では、書込制御情報は、２ビットの情報とする。具体的には、ブロック４０６が書換型ブロックであれば、メモリーコントローラＭＣ０等は、当該ブロック４０６の書込制御情報領域５１３に「１１」を格納する。
【００８４】
また、ブロック４０６が書込未完了の追記型ブロックであれば、メモリーコントローラＭＣ０等は、当該ブロック４０６の書込制御情報領域５１３に「１０」を格納する。なお、書込未完了の追記型ブロックは、未使用ページを一つでも含む追記型ブロックであり、データが書き込まれていても良い。
【００８５】
また、ブロック４０６が書込完了の追記型ブロックであれば、メモリーコントローラＭＣ０等は、当該ブロック４０６の書込制御情報領域５１３に「００」を格納する。書込完了の追記型ブロックは、未使用ページを含まない追記型ブロックであり、当該ブロック４０６に含まれるすべてのページにデータが格納されている。
【００８６】
なお、本実施の形態では、メモリコントローラＭＣ０等は、書込制御情報を「１０」から「１１」へ変更できない。同様に、書込制御情報を「００」から「１１」へ変更できない。つまり、メモリコントローラＭＣ０等は、追記型ブロックを書換型ブロックへ変更できないので、追記型ブロックに格納されているデータを消去できない。よって、本実施の形態のストレージ装置は、法律でＷＯＲＭ（Write Once Read Many）で記憶を義務づけられている文書を記憶することもできる。
【００８７】
図６は、第１の実施の形態のフラッシュメモリ・モジュールＦＭ０のメモリ４０４に記憶されているページ管理テーブル６００の構成図である。
【００８８】
ページ管理テーブル６００は、物理アドレス６０１、論理アドレス６０２及びステータス６０３を含む。
【００８９】
物理アドレス６０１は、フラッシュメモリ・モジュールＦＭ０内のページ５０１の物理アドレスである。なお、物理アドレス６０１は、メモリコントローラＭＣ０等がフラッシュメモリ・モジュールＦＭ０内のページ５０１にアクセスする際に使用するアドレスである。また、物理アドレス６０１は、フラッシュメモリ・チップ４０５の仕様及びフラッシュメモリ・モジュールＦＭ０等の構成等によって決まる。
【００９０】
論理アドレス６０２は、当該ページ５０１の論理アドレスである。なお、論理アドレス６０２は、ストレージコントローラＳＣがフラッシュメモリ・モジュールＦＭ０内のページ５０１にアクセスする際に使用するアドレスである。また、論理アドレス６０２は、当該ページが属するブロックの論理ブロック番号及び当該ページのオフセットアドレスによって決まる。
【００９１】
ステータス６０３は、当該ページ５０１が有効ページ、無効ページ、未使用ページ又は処理中のページのいずれであるかを示す。
【００９２】
なお、ページ管理テーブル６００は、ページ５０１の冗長部５０３に格納されている情報と同期される。
【００９３】
図７は、第１の実施の形態のフラッシュメモリ・モジュールＦＭ０のメモリ４０４に記憶されているブロック管理テーブル７００の構成図である。
【００９４】
ブロック管理テーブル７００は、物理ブロック番号７０５、論理ブロック番号７０１、書込制御情報７０２、未使用ページ数７０３及び消去回数７０４を含む。
【００９５】
物理ブロック番号７０５は、メモリコントローラＭＣ０等がブロック４０６を一意に識別する識別子である。
【００９６】
論理ブロック番号７０１は、ストレージコントローラＳＣがブロック４０６を一意に識別する識別子である。つまり、論理ブロック番号７０１は、当該ブロック４０６の論理ブロック番号領域５１０に格納されている値と同じ値になる。但し、当該ブロック４０６が未使用ブロックであると、論理ブロック番号７０１は「−」となる。
【００９７】
書込制御情報７０２は、当該ブロック４０６の属性である。具体的には、ブロック４０６が書換型ブロックであれば、当該ブロック４０６の書込制御情報７０２は「１１」となる。また、ブロック４０６が書込未完了の追記型ブロックであれば、当該ブロック４０６の書込制御情報７０２は「１０」となる。また、ブロック４０６が書込完了の追記型ブロックであれば、当該ブロック４０６の書込制御情報７０２は「００」となる。また、ブロック４０６が未使用ブロックであれば、当該ブロック４０６の書込制御情報７０２は「−」となる。
【００９８】
つまり、書込制御情報７０２は、当該ブロック４０６の書込制御情報領域５１３に格納されている値と同じ値になる。
【００９９】
消去回数７０４は、当該ブロック４０６のデータ消去回数である。なお、消去回数７０４は、当該ブロック４０６の消去回数領域５１２に格納されている値と同じ値になる。
【０１００】
未使用ページ数７０３は、当該ブロック４０６に含まれる未使用ページの数である。
【０１０１】
図８は、第１の実施の形態のフラッシュメモリ・モジュールＦＭ０のメモリ４０４に記憶されている領域属性管理テーブル８００の構成図である。
【０１０２】
領域属性管理テーブル８００は、開始論理アドレス８０１、領域サイズ８０２及び書込制御情報８０３を含む。
【０１０３】
開始論理アドレス８０１は、フラッシュメモリ・モジュールＦＭ０等の記憶領域の論理アドレスの先頭の値である。
【０１０４】
領域サイズ８０２は、当該記憶領域の記憶容量である。なお、本実施の形態では、領域サイズ８０２は、フラッシュメモリ・モジュールＦＭ０等のブロック４０６の記憶容量の倍数となる。なぜなら、記憶領域の属性は、ブロック単位で設定されるからである。
【０１０５】
書込制御情報８０３は、当該記憶領域の属性である。具体的には、書込制御情報８０３は、書換型の領域又は追記型の領域のいずれであるかを示す。
【０１０６】
ストレージコントローラＳＣは、フラッシュメモリ・モジュールＦＭ０等の記憶領域の割り当てに関する情報を保守端末ＳＶＰから受信する。次に、受信した割り当てに関する情報に応じて、記憶領域の開始論理アドレス、領域サイズ及び書込制御情報を求める。そして、当該求めた情報をメモリコントローラＭＣ０等に送信する。
【０１０７】
すると、メモリコントローラＭＣ０等は、受信した情報に基づいて、領域属性管理テーブル８００を作成する。具体的には、受信した開始論理アドレスを、領域属性管理テーブル８００の開始論理アドレス８０１に格納する。次に、受信した領域サイズを、領域属性管理テーブル８００の領域サイズ８０２に格納する。次に、受信した書込制御情報を、領域属性管理テーブル８００の書込制御情報８０３に格納する。
【０１０８】
次に、作成した領域属性管理テーブル８００に基づいて、フラッシュメモリ・モジュールＦＭ０等のブロック４０６の属性を決定する。そして、作成した領域属性管理テーブル８００及び決定したブロック４０６の属性に基づいて、ページ管理テーブル６００（図６）及びブロック管理テーブル７００（図７）を作成する。
【０１０９】
また、ストレージコントローラＳＣは、フラッシュメモリ・モジュールＦＭ０等が新たに接続されると、ＳＣＳＩのＩｎｑｕｉｒｙコマンドを当該フラッシュメモリ・モジュールＦＭ０等に送信する。
【０１１０】
すると、フラッシュメモリ・モジュールＦＭ０等は、領域属性管理テーブル８００の内容を含む応答をストレージコントローラＳＣへ送信する。
【０１１１】
これによって、ストレージコントローラＳＣは、新たに接続されたフラッシュメモリ・モジュールＦＭ０等の属性を取得できる。つまり、ストレージコントローラＳＣは、新たに接続されたフラッシュメモリ・モジュールＦＭ０等が追記型又は書換型のいずれであるかを知ることができる。
【０１１２】
図９は、第１の実施の形態のメモリコントローラＭＣ０等の書込コマンド実行処理のフローチャートである。
【０１１３】
まず、メモリコントローラＭＣ０等は、ストレージコントローラＳＣから書込コマンドを受信する（９０１）。なお、書込コマンドは、書込データ及び当該データを書き込むページ（書込先ページ）の論理アドレスを含む。
【０１１４】
メモリコントローラＭＣ０等は、書込コマンドを受信すると、当該書込コマンドから、論理アドレスを抽出する。次に、抽出した論理アドレスとページ管理テーブル６００の論理アドレス６０２が一致するレコードを、ページ管理テーブル６００から選択する。次に、選択したレコードから、物理アドレス６０１を抽出する。
【０１１５】
次に、抽出した物理アドレス６０１とフラッシュメモリ・モジュールＦＭ０等の構成に基づいて、当該物理アドレス６０１に対応するページを含むブロックの物理ブロック番号を求める。これによって、書込先ブロックの物理ブロック番号を求める（９０２）。
【０１１６】
次に、求めた物理ブロック番号とブロック管理テーブル７００の物理ブロック番号７０５とが一致するレコードを、ブロック管理テーブル７００から選択する。次に、選択したレコードから、書込制御情報７０２を抽出する。
【０１１７】
そして、抽出した書込制御情報７０２が「１１」であるか否かを判定する（９０３）。
【０１１８】
書込制御情報７０２が「１１」であると、書込先ブロック４０６が書換型ブロックであると判定する。よって、当該ブロックに書込処理を実行し（９０４）、本処理を終了する。なお、書込処理は、図１０で後述する。
【０１１９】
一方、書込制御情報７０２が「１１」でないと、書込先ブロック４０６が追記型ブロックであると判定する。そして、抽出した書込制御情報７０２が「１０」であるか否かを判定する（９０５）。
【０１２０】
書込制御情報７０２が「１０」でないと、書込先ブロックが書込完了の追記型ブロックであると判定する。よって、当該ブロックにデータを書き込むことができないので、書込エラーをストレージコントローラＳＣへ通知する（９１０）。
【０１２１】
具体的には、メモリコントローラＭＣ０等は、「SCSI Status=02h:Check Condition」を自身に設定する。そして、エラーメッセージの「Sense Key=07,additional sense code 27h,additional sense code qualifier=00:Write Protected」をストレージコントローラＳＣへ通知する。
【０１２２】
そして、本処理を終了する。
【０１２３】
一方、書込制御情報７０２が「１０」であると、データを書き込むブロックが書込未完了の追記型ブロックであると判定する。そこで、書込先ページが未使用ページであるか否かを判定する（９０６）。
【０１２４】
書込先ページが未使用ページでないと、当該ページにデータを書き込むことができないので、書込エラーをストレージコントローラＳＣへ通知する（９１０）。そして、本処理を終了する。
【０１２５】
一方、書込先ページが未使用ページであると、当該ページにデータを書き込む（９０７）。
【０１２６】
次に、ステップ９０２で求めた物理ブロック番号とブロック管理テーブル７００の物理ブロック番号７０５とが一致するレコードを選択する。次に、選択したレコードの未使用ページ数から、データを書き込んだページ数を減算する。
【０１２７】
そして、減算した値が「０」であるか否かを判定する。これによって、書込処理後に、当該ブロックに含まれる未使用ページ数が「０」になったかを判定する（９０８）。
【０１２８】
未使用ページ数が「０」にならないと、当該ブロックの属性を変更する必要がないので、そのまま本処理を終了する。
【０１２９】
一方、未使用ページ数が「０」になると、当該ブロックが書込完了になったと判定する。よって、当該ブロックの書込制御情報領域５１３に格納されている値を「００」に変更する。更に、ステップ９０８で選択したレコードの書込制御情報７０２を「００」に変更する（９０９）。そして、本処理を終了する。
【０１３０】
図１０は、第１の実施の形態のメモリコントローラＭＣ０等の書込処理のフローチャートである。
【０１３１】
フラッシュメモリＭＥＭ０等内のそれぞれのブロック４０６は、所定の領域にアドレスマッピング情報１５０７を備える。アドレスマッピング情報１５０７は、論理アドレスと物理アドレスとの対応を示す。
【０１３２】
以下、メモリコントローラＭＣ０等の書込処理を説明する。
【０１３３】
まず、メモリコントローラＭＣ０等は、書込先ページが未使用ページであるか否かを判定する。
【０１３４】
書込先ページが未使用ページであると、当該ページにデータを書き込む。そして、書込処理を終了する。
【０１３５】
一方、書込先ページが未使用ページでないと、当該ページにデータを書き込むことができない。ここでは、書込先ページが有効ページ１５０５である場合で説明する。
【０１３６】
この場合、当該有効ページ１５０５に格納されているデータを読み出し、メモリ４０４に格納する（１５１０）。ただし、当該有効ページ１５０５の全体を書き換える場合には、データを読み出す必要はない。
【０１３７】
次に、メモリ４０４に格納されているデータに書込データを上書きする。次に、メモリ４０４内で上書きしたデータを、当該ブロック４０６に含まれる未使用ページ１５０６へ書き込む（１５１１）。
【０１３８】
次に、当該ブロック４０６のアドレスマッピング情報１５０７及びページ管理テーブル６００（図６）を変更する。具体的には、データを書き込んだ未使用ページ１５０６の論理アドレスが、データを読み出した有効ページ１５０５の論理アドレスの値になるように、マッピング情報１５０７を及びページ管理テーブル６００を変更する。更に、データを読み出した有効ページ１５０５の論理アドレスを、マッピング情報１５０７及びページ管理テーブル６００から削除する。
【０１３９】
次に、データを読み出した有効ページ１５０５の冗長部に格納されているページステータスの「有効ページ」を「無効ページ」に変更する。また、未使用ページ１５０６の冗長部に格納されているページステータスの「未使用ページ」を「有効ページ」に変更する。
【０１４０】
以上のように、メモリコントローラＭＣは、論理アドレスと物理アドレスとの対応関係を変更することによって、フラッシュメモリＭＥＭ０等にデータを書き込む。これによって、フラッシュメモリＭＥＭ０等のデータ消去回数を減らすことができるので、フラッシュメモリＭＥＭ０等にデータを高速に書き込むことができる。
【０１４１】
図１１は、第１の実施の形態のメモリコントローラＭＣ０等の属性変更処理のフローチャートである。
【０１４２】
まず、メモリコントローラＭＣ０等は、ストレージコントローラＳＣから追記型ブロックの割り当て要求を受ける。なお、当該追記型ブロックの割り当て要求は、追記型ブロックに割り当てる記憶容量（要求容量）を含む。
【０１４３】
メモリコントローラＭＣ０等は、ブロック管理テーブル７００から消去回数７０４をすべて抽出する。次に、抽出した消去回数７０４を参照して、ウエアレベリング処理を行う（１００１）。具体的には、消去回数７０４の多いブロックのデータを、消去回数７０４の少ないブロックへ移動させる。なお、メモリコントローラＭＣ０等は、書換型ブロックに対してのみ、ウェアレベリング処理を行う。
【０１４４】
次に、ブロック管理テーブル７００の書込制御情報７０２が「−」のレコードを選択することによって、未使用ブロックの数を求める。次に、求めた未使用ブロックの数に単位ブロックの容量を乗じることによって、未使用ブロックの容量を算出する。次に、受け取った割り当て要求から、要求容量を抽出する。
【０１４５】
次に、算出した未使用ブロックの容量が、抽出した要求容量以上であるか否かを判定する（１００２）。
【０１４６】
未使用ブロックの容量が要求容量より小さいと、未使用ブロックが足りないので、追記型ブロックへの割り当てができない。そこで、書換可能ブロックに対してのみ、リクラメーション処理を行う（１００３）。これによって、書換型ブロックを未使用ブロックに再生する（１００３）。そして、ステップ１００２に戻る。
【０１４７】
一方、未使用ブロックの容量が要求容量以上であると、当該未使用ブロックの物理ブロック番号と管理テーブル７００の物理ブロック番号７０１とが一致するレコードを選択する。次に、選択したレコードから、消去回数７０４を抽出する。次に、抽出した消去回数７０４の多い未使用ブロックから順に選択する。次に、選択した未使用ブロックを追記型ブロックに変更する（１００４）。
【０１４８】
具体的には、当該未使用ブロックの書込制御情報領域５１３に「１０」を格納する。更に、ブロック管理テーブル７００の書込制御情報７０２に「１０」を格納する（１００５）。
【０１４９】
そして、追記型ブロックの容量が要求容量となるまで、未使用ブロックを追記型ブロックに変更し、本処理を終了する。
【０１５０】
なお、属性変更処理は、予め確保されている追記型ブロックの容量が不足した場合に有用である。
【０１５１】
以上のように、メモリコントローラＭＣ０等は、消去回数の多いブロックを追記型ブロックとする。消去回数の多いブロックは、データを消去しない追記型ブロックとなるので、消去回数による寿命にならなくなる。
【０１５２】
また、メモリコントローラＭＣ０等は、消去回数の多いブロックを追記型ブロックとするので、消去回数の少ないブロックを、データの消去を伴う書換型ブロックとして使用できる。
【０１５３】
また、メモリコントローラＭＣ０等は、書換型ブロックに対してのみ、ウェアレベリング処理及びリクラメーション処理を行う。つまり、追記型ブロックに対しては、ウェアレベリング処理及びリクラメーション処理を行わない。よって、追記型ブロックに記憶されているデータは、ブロック間を移動しない。そのため、本発明のストレージ装置は、追記型ブロックに記憶されているデータのブロック間の移動による消失を防ぐことができる。
【０１５４】
（第２の実施の形態）
本発明の第２の実施の形態では、書換型ブロックへの書き込み後に、当該ブロックの属性を追記型ブロックへ変更する。
【０１５５】
第２の実施の形態のストレージ装置の構成は、第１の実施の形態のストレージ装置（図１）と同一である。よって、説明を省略する。
【０１５６】
図１２は、第２の実施の形態のメモリコントローラＭＣ０等の書込コマンド実行処理のフローチャートである。
【０１５７】
第２の実施の形態の書込コマンド実行処理は、書込処理９０４の後に、追記型ブロックへ変更するか否かを判定する。それ以外の処理は、第１の実施の形態の書込コマンド実行処理（図９）と同一である。同一の処理は同一の番号を付し、説明を省略する。
【０１５８】
メモリコントローラＭＣ０等は、書込処理９０４を行うと、ステップ９０１で受け取った書込コマンドに追記型ブロックへの変更要求が含まれているか否かを判定する（９１１）。
【０１５９】
追記型ブロックへの変更要求が含まれていないと、そのまま本処理を終了する。
【０１６０】
一方、追記型ブロックへの変更要求が含まれていると、書込処理を行った書換型ブロックを、追記型ブロックへ変更する。具体的には、当該ブロックの書込制御情報領域５１３に「１０」を格納する。更に、ブロック管理テーブル７００の書込制御情報７０２に「１０」を格納する。
【０１６１】
そして、ステップ９０８に進む。ステップ９０８以降の処理は、第１の実施の形態の書込コマンド実行処理と同一なので、説明を省略する。
【０１６２】
第２の実施の形態では、メモリコントローラＭＣ０等は、データの書込処理に続いて、ブロックの属性を変更するので、追記型ブロックの範囲を拡大する処理を簡略に行える。
【０１６３】
（第３の実施の形態）
本発明の第３の実施の形態では、データの保持期間に応じて、ブロックの属性を変更する。
【０１６４】
図１３は、第３の実施の形態のフラッシュメモリ・モジュールＦＭ０のブロック４０６の説明図である。
【０１６５】
ブロック４０６の構成は、ブロック管理情報５２０を除き、第１の実施の形態のブロック（図５）と同一である。同一の構成は同一の番号を付し、説明を省略する。
【０１６６】
ブロック管理情報５２０は、論理ブロック番号領域５１０、有効フラグ領域５１１、消去回数領域５１２、書込制御情報領域１２０１及びデータ保持期間情報領域１２０２を含む。論理ブロック番号領域５１０、有効フラグ領域５１１、消去回数領域５１２は、第１の実施の形態のブロック（図５）の構成と同一であるので、説明を省略する。
【０１６７】
書込制御情報領域１２０１は、当該ブロック４０６の書込制御情報を記憶する。書込制御情報は、当該ブロック４０６の属性である。本実施の形態では、書込制御情報は、３ビットの情報とする。
【０１６８】
具体的には、ブロック４０６が書換型ブロックであれば、メモリーコントローラＭＣ０等は、当該ブロック４０６の書込制御情報領域１２０１に「１１１」を格納する。
【０１６９】
また、ブロック４０６が書込未完了の追記型ブロックであれば、メモリーコントローラＭＣ０等は、当該ブロック４０６の書込制御情報領域１２０１に「１１０」を格納する。
【０１７０】
また、ブロック４０６が、データ保持期限の経過後であれば消去可能なデータを記憶し、且つ、書込完了の追記型ブロックであれば、メモリーコントローラＭＣ０等は、当該ブロック４０６の書込制御情報領域１２０１に「０００」を格納する。
【０１７１】
また、ブロック４０６が、データ保持期限の経過後であっても消去不可能なデータを記憶し、且つ、書込完了の追記型ブロックであれば、メモリーコントローラＭＣ０等は、当該ブロック４０６の書込制御情報領域１２０１に「１００」を格納する。
【０１７２】
データ保持期間情報領域１２０２は、当該ブロック４０６のデータ保持期間情報を記憶する。データ保持期間情報は、例えば、データの書込年月日、データの保持期限年月日又はデータの保持期間等である。
【０１７３】
図１４は、第３の実施の形態のメモリコントローラＭＣ０等の保持期限経過ブロック再生処理のフローチャートである。
【０１７４】
まず、メモリコントローラＭＣ０等は、ストレージコントローラＳＣの時計を参照することによって、時刻情報を取得する。次に、取得した時刻情報をメモリ４０４に格納する（１３０１）。これによって、フラッシュメモリ・モジュールＦＭ０等は、時計をそれぞれ備える必要がなくなる。
【０１７５】
次に、フラッシュメモリ・モジュールＦＭ０等に含まれるすべてのブロック４０６のデータ保持期間情報領域１２０２を走査することによって、データ保持期限が過ぎたブロック４０６を選択する（１３０２）。
【０１７６】
次に、選択したブロック４０６の書込制御情報領域１２０１から、書込制御情報を抽出する。次に、抽出した書込制御情報が「０００」であるか否かを判定する（１３０３）。
【０１７７】
書込制御情報が「０００」でないと、当該ブロック４０６がデータ保持期限の経過後であっても消去不可能なデータを記憶していると判定する。よって、そのまま本処理を終了する。
【０１７８】
一方、書込制御情報が「０００」であると、当該ブロック４０６がデータ保持期限の経過後であれば消去可能なデータを記憶していると判定する。よって、当該ブロック４０６に記憶されているデータを消去する。そして、当該ブロック４０６を未使用ブロックとする（１３０４）。
【０１７９】
具体的には、当該データを消去したブロック４０６の物理ブロック番号と物理管理テーブル７００の物理ブロック番号７０５とが一致するレコードを、ブロック管理テーブル７００から選択する。次に、選択したレコードの論理ブロック番号７０１に「−」を格納する。次に、選択したレコードの書込制御情報７０２に「−」を格納する。次に、選択したレコードの未使用ページ数７０３に、当該ブロックに含まれるすべてのページの数を格納する。次に、選択したレコードの消去回数７０４を増加させる。
【０１８０】
そして、本処理を終了する。
【０１８１】
例えば、メモリコントローラＭＣ０等は、ストレージ装置の立ち上げ時に、保持期限経過ブロック再生処理を実行する。また、一日に一回程度、保持期限経過ブロック再生処理を実行しても良い。
【０１８２】
本実施の形態では、メモリーコントローラＭＣ０等は、データ保持期限の経過後に、消去可能なデータをブロック４０６から消去する。これによって、ストレージ装置は、記憶領域を有効に利用できる。
【産業上の利用可能性】
【０１８３】
本発明は、様々な情報を記憶するストレージ装置に利用できる。特に、法律によって追記型（ライトワンス）の記憶装置での記憶が義務付けられている文書データを記憶するストレージ装置に利用できる。例えば、金融機関又は医療機関などの文書データを記憶するストレージ装置に利用できる。
【図面の簡単な説明】
【０１８４】
【図１】第１の実施の形態のストレージ装置のブロック図である。
【図２】第１の実施の形態のチャネルアダプタのブロック図である。
【図３】第１の実施の形態のストレージアダプタのブロック図である。
【図４】第１の実施の形態のフラッシュメモリ・モジュールのブロック図である。
【図５】第１の実施の形態のフラッシュメモリ・モジュールのブロックの説明図である。
【図６】第１の実施の形態のフラッシュメモリ・モジュールのメモリに記憶されているページ管理テーブルの構成図である。
【図７】第１の実施の形態のフラッシュメモリ・モジュールのメモリに記憶されているブロック管理テーブルの構成図である。
【図８】第１の実施の形態のフラッシュメモリ・モジュールのメモリに記憶されている領域属性管理テーブルの構成図である。
【図９】第１の実施の形態のメモリコントローラの書込コマンド実行処理のフローチャートである。
【図１０】第１の実施の形態のメモリコントローラの書込処理のフローチャートである。
【図１１】第１の実施の形態のメモリコントローラの属性変更処理のフローチャートである。
【図１２】第２の実施の形態のメモリコントローラの書込コマンド実行処理のフローチャートである。
【図１３】第３の実施の形態のフラッシュメモリ・モジュールのブロックの説明図である。
【図１４】第３の実施の形態のメモリコントローラの保持期限経過ブロック再生処理のフローチャートである。
【符号の説明】
【０１８５】
ＳＣ  ストレージコントローラ
ＣＡ０、ＣＡ１  チャネルアダプタ
ＣＭ０、ＣＭ１  キャッシュメモリ
ＳＡ０、ＳＡ１  ストレージアダプタ
ＦＭ０、ＦＭ１、ＦＭ２、ＦＭ３  フラッシュメモリ・モジュール
ＭＣ０、ＭＣ１、ＭＣ２、ＭＣ３  メモリコントローラ
ＭＥＭ０、ＭＥＭ１、ＭＥＭ２、ＭＥＭ３  フラッシュメモリ
Ｃ００、Ｃ０１、Ｃ０２、Ｃ０３、Ｃ１０、Ｃ１１、Ｃ１２、Ｃ１３、Ｄ００、Ｄ０１、Ｄ０２、Ｄ０３、Ｄ１０、Ｄ１１、Ｄ１２、Ｄ１３  チャネル
ＮＷ０、ＮＷ１  相互結合網
ＳＶＰ  保守端末
２１  ホストチャネル・インターフェイス
２２  キャッシュメモリ・インタフェース
２３  ネットワーク・インタフェース
２４  プロセッサ
２５  ローカルメモリ
２６  プロセッサ周辺制御部
２７  信号線
３１  キャッシュメモリ・インタフェース
３２  ストレージチャネル・インタフェース
３３  ネットワーク・インターフェイス
３４  プロセッサ
３５  ローカルメモリ
３６  プロセッサ周辺制御部
３７  信号線
４０１  プロセッサ
４０２  インターフェイス部
４０３  データ転送部
４０４  メモリ
４０５  フラッシュメモリ・チップ
４０６  ブロック
【図１】
0004688584.tif 000002
【図２】
0004688584.tif 000003
【図３】
0004688584.tif 000004
【図４】
0004688584.tif 000005
【図５】
0004688584.tif 000006
【図６】
0004688584.tif 000007
【図７】
0004688584.tif 000008
【図８】
0004688584.tif 000009
【図９】
0004688584.tif 000010
【図１０】
0004688584.tif 000011
【図１１】
0004688584.tif 000012
【図１２】
0004688584.tif 000013
【図１３】
0004688584.tif 000014
【図１４】
0004688584.tif 000015