(57)【特許請求の範囲】
【請求項１】
外部システムからの命令により、不揮発性メモリ及び前記不揮発性メモリとは別に設けられたメモリへの読み出し及び書き込み処理を行うメモリコントローラであって、
前記不揮発性メモリは、所定の書き込み単位であるページと前記書き込み単位よりも大きいデータ消去単位であるブロックとを持ち、１つ以上のブロックからなる管理テーブル格納ブロックと、データ書き込みを行うために割り当てた１つ以上のブロックからなるスクラッチブロックと、書き込まれたデータを保持する１つ以上のブロックからなるデータブロックと、データ消去を実行した１つ以上のブロックからなる消去済みブロックとを有し、
前記メモリは、前記外部システムが読み出し及び書き込みを要求したデータの格納場所を管理する論理・物理アドレス変換テーブルと、ブロック履歴管理テーブルとを有し、
前記論理・物理アドレス変換テーブルは、全ての論理アドレスと物理アドレスを前記ページ単位で管理し、
前記管理テーブル格納ブロックは、前記論理・物理アドレス変換テーブルと前記ブロック履歴管理テーブルとを保存する管理テーブルページを有し、
前記スクラッチブロック及び前記データブロックは、データ及びこのデータを識別する前記論理アドレスを有するページを含み、
前記不揮発性メモリと前記メモリを制御対象とする前記メモリコントローラにおいて、
前記ブロック履歴管理テーブルに、前記スクラッチブロックと前記消去済みブロックとを記録し、
前記論理アドレスを分割した論理アドレス空間である論理グループに前記スクラッチブロックが割り当てられていない場合には、前記消去済みブロックの１つを前記スクラッチブロックに割り当てて、前記ブロック履歴管理テーブルに、前記スクラッチブロックの物理ブロック番号、論理グループ番号、及び前記論理グループごとに割り当てた前記スクラッチブロックの数である割り当てブロック数を記録し、
前記割り当てブロック数の総和が予め定めた値に到達したら、前記割り当てブロック数に従って選択した前記論理グループ番号に属する前記論理・物理アドレス変換テーブルの一部を、前記不揮発性メモリの前記管理テーブル格納ブロックに保存し、
前記メモリに前記論理・物理アドレス変換テーブルを復元する場合には、復元対象となる前記論理グループの前記論理・物理アドレス変換テーブルを前記不揮発性メモリから前記メモリに読み出し、復元対象となる前記論理グループを含むブロックが前記ブロック履歴管理テーブルに登録されているかどうかを判定し、
復元対象となる前記論理グループを含むブロックが前記ブロック履歴管理テーブルに登録されている場合には、登録されている前記ブロック内のページごとに前記論理アドレスを用いて前記論理・物理アドレス変換テーブルを更新することを特徴とするメモリコントローラ。
【請求項２】
請求項１記載のメモリコントローラであって、
前記メモリは、前記スクラッチブロックを管理するスクラッチブロック管理テーブル、前記データブロックを管理するデータブロック管理テーブル、前記消去済みブロックを管理する消去済みブロック管理テーブル、及び前記ブロックの属性を管理する物理ブロック管理テーブルをさらに有し、
前記管理テーブル格納ブロックの前記管理テーブルページは、前記スクラッチブロック管理テーブル、前記データブロック管理テーブル、前記消去済みブロック管理テーブル、及び前記物理ブロック管理テーブルをさらに保存し、
前記不揮発性メモリと前記メモリを制御対象とする前記メモリコントローラにおいて、
前記スクラッチブロック管理テーブルの一部、前記データブロック管理テーブルの一部、前記消去済みブロック管理テーブルの少なくとも一部、前記物理ブロック管理テーブルの一部、及び前記ブロック履歴管理テーブルの一部を、前記不揮発性メモリの前記管理テーブル格納ブロックに保存するメモリコントローラ。
【請求項３】
前記スクラッチブロック管理テーブルの一部、前記データブロック管理テーブルの一部、前記消去済みブロック管理テーブルの一部、前記物理ブロック管理テーブルの一部、及び前記ブロック履歴管理テーブルの一部は、これらの各テーブルの更新頻度に基づいてそれぞれ選択して保存する請求項２記載のメモリコントローラ。
【請求項４】
前記管理テーブル格納ブロックに保存した前記スクラッチブロック管理テーブルと前記データブロック管理テーブルと前記消去済みブロック管理テーブルと前記物理ブロック管理テーブルと前記ブロック履歴管理テーブル、及び前記論理アドレスを用いて、前記メモリに、前記スクラッチブロック管理テーブル、前記データブロック管理テーブル、前記消去済みブロック管理テーブル、及び前記物理ブロック管理テーブルを復元する請求項２記載のメモリコントローラ。
【請求項５】
所定の書き込み単位であるページと前記書き込み単位よりも大きいデータ消去単位であるブロックとを持つ不揮発性メモリと、データの読み出し及び書き込みができ前記不揮発性メモリとは別に設けられたメモリと、外部システムからの命令により前記不揮発性メモリ及び前記メモリへの読み出し及び書き込み処理を行うメモリコントローラとを備えるデータ記録装置において、
前記不揮発性メモリは、１つ以上のブロックからなる管理テーブル格納ブロックと、データ書き込みを行うために割り当てた１つ以上のブロックからなるスクラッチブロックと、書き込まれたデータを保持する１つ以上のブロックからなるデータブロックと、データ消去を実行した１つ以上のブロックからなる消去済みブロックとを有し、
前記メモリは、前記外部システムが読み出し及び書き込みを要求したデータの格納場所を管理する論理・物理アドレス変換テーブルと、ブロック履歴管理テーブルを有し、
前記論理・物理アドレス変換テーブルは、全ての論理アドレスと物理アドレスを前記ページ単位で管理し、
前記管理テーブル格納ブロックは、前記論理・物理アドレス変換テーブルと前記ブロック履歴管理テーブルとを保存する管理テーブルページを有し、
前記スクラッチブロック及び前記データブロックは、データ及びこのデータを識別する前記論理アドレスを有するページを含み、
前記メモリコントローラは、
前記ブロック履歴管理テーブルに、前記スクラッチブロックと前記消去済みブロックとを記録し、
前記論理アドレスを分割した論理アドレス空間である論理グループに前記スクラッチブロックが割り当てられていない場合には、前記消去済みブロックの１つを前記スクラッチブロックに割り当てて、前記ブロック履歴管理テーブルに、前記スクラッチブロックの物理ブロック番号、論理グループ番号、及び前記論理グループごとに割り当てた前記スクラッチブロックの数である割り当てブロック数を記録し、
前記割り当てブロック数の総和が予め定めた値に到達したら、前記割り当てブロック数に従って選択した前記論理グループ番号に属する前記論理・物理アドレス変換テーブルの一部を、前記不揮発性メモリの前記管理テーブル格納ブロックに保存し、
前記メモリに前記論理・物理アドレス変換テーブルを復元する場合には、復元対象となる前記論理グループの前記論理・物理アドレス変換テーブルを前記不揮発性メモリから前記メモリに読み出し、復元対象となる前記論理グループを含むブロックが前記ブロック履歴管理テーブルに登録されているかどうかを判定し、
復元対象となる前記論理グループを含むブロックが前記ブロック履歴管理テーブルに登録されている場合には、登録されている前記ブロック内のページごとに前記論理アドレスを用いて前記論理・物理アドレス変換テーブルを更新することを特徴とするデータ記録装置。
【請求項６】
請求項５記載のデータ記録装置であって、
前記メモリは、前記スクラッチブロックを管理するスクラッチブロック管理テーブル、前記データブロックを管理するデータブロック管理テーブル、前記消去済みブロックを管理する消去済みブロック管理テーブル、及び前記ブロックの属性を管理する物理ブロック管理テーブルをさらに有し、
前記管理テーブル格納ブロックの前記管理テーブルページは、前記スクラッチブロック管理テーブル、前記データブロック管理テーブル、前記消去済みブロック管理テーブル、及び前記物理ブロック管理テーブルをさらに保存し、
前記メモリコントローラは、前記スクラッチブロック管理テーブルの一部、前記データブロック管理テーブルの一部、前記消去済みブロック管理テーブルの少なくとも一部、前記物理ブロック管理テーブルの一部、及び前記ブロック履歴管理テーブルの一部を、前記不揮発性メモリの前記管理テーブル格納ブロックに保存するデータ記録装置。
【請求項７】
前記メモリコントローラは、前記スクラッチブロック管理テーブルの一部、前記データブロック管理テーブルの一部、前記消去済みブロック管理テーブルの一部、前記物理ブロック管理テーブルの一部、及び前記ブロック履歴管理テーブルの一部を、これらの各テーブルの更新頻度に基づいてそれぞれ選択して保存する請求項６記載のデータ記録装置。
【請求項８】
前記メモリコントローラは、前記管理テーブル格納ブロックに保存した前記スクラッチブロック管理テーブルと前記データブロック管理テーブルと前記消去済みブロック管理テーブルと前記物理ブロック管理テーブルと前記ブロック履歴管理テーブル、及び前記論理アドレスを用いて、前記メモリに、前記スクラッチブロック管理テーブル、前記データブロック管理テーブル、前記消去済みブロック管理テーブル、及び前記物理ブロック管理テーブルを復元する請求項６記載のデータ記録装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ記録装置内の不揮発性メモリを制御するメモリコントローラと、このメモリコントローラを備えるデータ記録装置に関する。
【背景技術】
【０００２】
情報機器の補助記憶装置として、一般に磁気ディスク記憶装置が用いられている。磁気ディスク記憶装置では、データの読み出し及び書き込みはセクタと呼ばれる記憶単位ごとに行われている。
【０００３】
近年、上記のような磁気ディスク記憶装置に代わり、半導体メモリを記憶媒体とする記憶装置が増えてきている。その中でも、電気的に消去可能かつ再書き込み可能な不揮発性メモリＥＥＰＲＯＭ（Electrically Erasable Programmable Read only Memory）の一種であるフラッシュメモリを用いた記憶装置が主流となってきている。
【０００４】
フラッシュメモリは、磁気ディスクと比べて読み出し及び書き込み速度に優れるが、以下の４点に挙げるような使用上の制限がある。第１に、書き込み単位（一般的にページと呼ばれる）と消去単位（一般にブロックと呼ばれる）が決まっており、消去単位は書き込み単位よりも大きいことである。第２に、データを上書きする際には一度データを消去し、再度書き込みを行う必要があることである。第３に、複数のページで構成される１つのブロックにデータを書き込む場合、連続したページ番号順に書き込む必要があることである。第４に、各ブロックには消去回数に制限があることである。
【０００５】
また、不揮発性メモリの読み出し及び書き込み速度を改善するための技術は進展しないにも関わらず、メモリの記録容量は、微細化技術の進展に伴い、倍増する傾向を維持し続けている。最新の不揮発性メモリを使用したデータ記録装置を設計する場合には、データ記録装置に設定した論理記録容量の倍増に伴い、メモリを管理するための管理テーブルの容量も倍増してしまう。
【０００６】
上述したフラッシュメモリの特性を考慮し、データ消去に伴うページデータのコピー量を低減させるために、所定の書き込み単位でデータ構造を管理するというメモリ制御方法を用いると、管理テーブルの容量が増大する。
【０００７】
管理テーブルは、アクセス速度に優れた揮発性メモリに保持することが一般的であるが、突然に電源が遮断されてしまった場合には失われてしまう。このため、管理テーブルを復元させる様々な方法が提案されてきた。特に、論理・物理アドレス変換テーブルを復元するための方法が、数多く提案されてきた。論理・物理アドレス変換テーブルとは、データ記録装置が接続されるホスト計算機が指定する論理アドレスを、データが実際に格納されている物理アドレスに変換する際に使用するテーブルである。
【０００８】
最も簡便な方法は、電源補助装置をデータ記録装置に搭載し、電源遮断時に、不揮発性メモリに管理テーブルを書き込むことである。しかし、電源補助装置の容量は進展しないにも関わらず、不揮発性メモリの物理記録容量が倍増し、データ記録装置の論理記録容量が倍増している。このため、論理記憶容量の拡張性を維持したまま管理テーブルを保護する方法が望まれる。
【０００９】
特許文献１と特許文献２には、データページに付与したヘッダ情報を用いて、全データページのヘッダ情報を走査することで、電源補助装置を搭載せずに上記の管理テーブルを復元する方法が開示されている。特許文献１及び特許文献２に記載の復元方法は、格納されたデータの新旧を判定する方法を示したものとして、特許文献３で開示されている識別情報を応用した方法に立脚している。
【００１０】
しかし、不揮発性メモリに対するヘッダ情報の読み出し速度が容易には改善されないため、管理テーブルを復元する時間が延びてしまい、電源入力後、短時間でホスト計算機によるデータアクセスを開始できないというという課題がある。
【００１１】
特許文献４、特許文献５、及び特許文献６には、この課題に対して、不揮発性メモリに定期的に管理テーブルを保存し、保存した後に発生した管理テーブルの更新差分を復元する方法が開示されている。
【先行技術文献】
【特許文献】
【００１２】
【特許文献１】特許第４０７９５０６号公報
【特許文献２】特開２００３−１６７７９５号公報
【特許文献３】特許第３０７０５３９号公報
【特許文献４】米国特許第７５１６２６７号
【特許文献５】特表２００８−５１１９１３号公報
【特許文献６】米国特許第７７２１０４０号
【発明の概要】
【発明が解決しようとする課題】
【００１３】
特許文献４、５、６に開示された方法を適用したメモリ制御方法は、電源補助装置を必要とせず、短時間で管理テーブルを復元することができる。その一方で、管理テーブルを不揮発性メモリに保存する頻度を低減させるために、大量のデータ消去済みのブロックを確保しておく必要がある。そのため、論理記録容量が変わらないのにも関わらず、有効なデータを保持するブロックの数が減少してしまい、１ブロックに含まれる有効データページの数が増加してしまう。結果として、特許文献１に記載されているメモリ制御方法を適用することで得られるはずである、データ消去に伴い発生するページデータ数を抑制する効果が失われてしまうという課題がある。
【００１４】
さらに、特許文献４、５、６に開示された方法では、一度にすべての管理テーブルを一括して不揮発性メモリに保存することを要求している。不揮発性メモリの書き込み速度が改善せず、管理テーブルの容量が倍増することを鑑みれば、管理テーブルを不揮発性メモリに保存する時間が倍増してしまうことは自明である。実際、論理記録容量が倍増するに従って、ホスト計算機がデータ記録装置に対してデータアクセスをする際の応答遅延時間が倍増してしまうという課題がある。
【００１５】
本発明の目的は、管理テーブルを不揮発性メモリに保存することに伴う、ホスト計算機から見た応答遅延時間を縮減し、高速なアクセス性能とデータ書き換え容量を最大化する効果を維持しながら、データ記録装置の電源遮断後に、不揮発性メモリに保存した情報から管理テーブルを復元する機能を備えるメモリコントローラを提供することである。
【課題を解決するための手段】
【００１６】
本発明によるメモリコントローラは、次のような特徴を備える。
【００１７】
外部システムからの命令により、不揮発性メモリ及び前記不揮発性メモリとは別に設けられたメモリへの読み出し及び書き込み処理を行うメモリコントローラである。前記不揮発性メモリは、所定の書き込み単位であるページと前記書き込み単位よりも大きいデータ消去単位であるブロックとを持ち、１つ以上のブロックからなる管理テーブル格納ブロックと、データ書き込みを行うために割り当てた１つ以上のブロックからなるスクラッチブロックと、書き込まれたデータを保持する１つ以上のブロックからなるデータブロックと、データ消去を実行した１つ以上のブロックからなる消去済みブロックとを有する。前記メモリは、前記外部システムが読み出し及び書き込みを要求したデータの格納場所を管理する論理・物理アドレス変換テーブルと、ブロック履歴管理テーブルとを有する。前記管理テーブル格納ブロックは、前記論理・物理アドレス変換テーブルと前記ブロック履歴管理テーブルとを保存する管理テーブルページを有する。前記スクラッチブロック及び前記データブロックは、データ及びこのデータを識別する論理アドレスを有するページを含む。前記不揮発性メモリと前記メモリを制御対象とする前記メモリコントローラは、前記論理・物理アドレス変換テーブルの一部を、前記不揮発性メモリの前記管理テーブル格納ブロックに保存する。
【発明の効果】
【００１８】
本発明によるメモリコントローラは、管理テーブルを不揮発性メモリに保存することに伴う、ホスト計算機から見た応答遅延時間を縮減することと、高速なアクセス性能とデータ書き換え容量を最大化する効果を維持することが可能であり、データ記録装置の電源遮断後に、不揮発性メモリに保存した情報から管理テーブルを復元することができる。
【図面の簡単な説明】
【００１９】
【図１】本発明の実施例によるデータ記録装置のハードウェア構成例を示す図である。
【図２】不揮発性メモリの構成を示す図である。
【図３Ａ】ブロックヘッダページに格納するデータの構成を示す図である。
【図３Ｂ】データページに格納するデータの構成を示す図である。
【図３Ｃ】管理テーブルページに格納するデータの構成を示す図である。
【図４Ａ】論理・物理アドレス変換テーブルのデータ構造の例を示す図である。
【図４Ｂ】スクラッチブロック管理テーブルのデータ構造の例を示す図である。
【図４Ｃ】データブロック管理テーブルのデータ構造の例を示す図である。
【図４Ｄ】消去済みブロック管理テーブルのデータ構造の例を示す図である。
【図４Ｅ】物理ブロック管理テーブルのデータ構造の例を示す図である。
【図４Ｆ】ブロック履歴管理テーブルのデータ構造の例を示す図である。
【図５Ａ】データ書き込み時の管理テーブルの更新処理における、メイン処理のフローチャートを示す図である。
【図５Ｂ】書き込み可能なページを特定する処理のフローチャートを示す図である。
【図５Ｃ】各種管理テーブルを更新する処理のフローチャートを示す図である。
【図５Ｄ】各種管理テーブルを保存する処理のフローチャートを示す図である。
【図６】ブロック消去時の管理テーブルの更新処理過程のフローチャートを示す図である。
【図７Ａ】管理テーブルの復元処理における、メイン処理のフローチャートを示す図である。
【図７Ｂ】各種管理テーブルを復元する処理のフローチャートを示す図である。
【図７Ｃ】消去済みブロック管理テーブルを復元する処理のフローチャートを示す図である。
【図８Ａ】ホスト計算機から不揮発性メモリ上のデータへのリードアクセス方法を説明する図である。
【図８Ｂ】ホスト計算機から不揮発性メモリへのデータのライトアクセス方法を説明する図である。
【発明を実施するための形態】
【００２０】
本発明によるメモリコントローラは、スクラッチブロック（データを書き込むことができるページを含むブロック）として割り当てたか、データ消去を行ったブロックの履歴を逐次記録する。これにより、管理テーブルを保存する時点で消去済みのブロックを不揮発性メモリに大量に保持する必要がなく、適当に選択した管理テーブルの一部だけを保存することが可能となる。従って、不揮発性メモリに保存した管理テーブルからの更新差分となるデータだけを追跡することができる。この結果、データ消去を実行する際に必要となる有効なページデータのコピー量を抑制することができ、データ書き換え速度の高速化、及び総書き換え容量の低下を防ぐことによる長寿命化が図れる。
【００２１】
また、追跡記録するブロックの数を任意に設定できるため、管理テーブルの保存周期を十分に長く設定することができる。このため、データ書き換え速度の高速性を維持することができる。
【００２２】
また、本発明によれば、適当に選択した管理テーブルの一部だけを不揮発性メモリに保存すればよい。このため、論理記録容量を倍増させても、管理テーブルを一括して保存することによる応答遅延時間を任意に縮減することができる。
【００２３】
さらに、本発明によれば、データ記録装置の電源遮断後に、不揮発性メモリに保存した管理テーブルを含む情報を用いて、最新の管理テーブルを復元することができる。
【００２４】
以下、図面を用いて本発明によるメモリコントローラ及びデータ記録装置の実施例を説明する。
【００２５】
図１は、本実施例によるデータ記録装置のハードウェア構成例を示す図である。データ記録装置１０１は、本実施例によるメモリコントローラ１０１０、１つまたは複数の不揮発性メモリ１０１１、及びメモリ１０１２を備え、データパス１０２を介して、外部システムであるホスト計算機１００と接続される。
【００２６】
本明細書に記載の不揮発性メモリとは、以下の特徴を有するものである。すなわち、ある所定の書き込み単位とこの書き込み単位よりも大きいデータ消去単位を持ち、データを書き換えるためには事前にデータ消去処理を必要とする。
【００２７】
メモリ１０１２は、論理・物理アドレス変換テーブル１０１２０、スクラッチブロック管理テーブル１０１２１、データブロック管理テーブル１０１２２、消去済みブロック管理テーブル１０１２３、物理ブロック管理テーブル１０１２４、及びブロック履歴管理テーブル１０１２５を格納する。メモリ１０１２は、アクセス速度の観点から、揮発性ＲＡＭを用いてよい。また、起動時に上記のテーブル１０１２０〜１０１２５の一部または全部を復元するために必要な処理を省くために、不揮発性メモリを用いてもよい。
【００２８】
以下の説明では、論理・物理アドレス変換テーブル１０１２０、スクラッチブロック管理テーブル１０１２１、データブロック管理テーブル１０１２２、消去済みブロック管理テーブル１０１２３、物理ブロック管理テーブル１０１２４、及びブロック履歴管理テーブル１０１２５のことを、「管理テーブル」とも称する。
【００２９】
図２は、不揮発性メモリ１０１１の構成を示す図である。不揮発性メモリ１０１１は、１つ以上のブロック２００と呼ばれるデータ消去単位から構成される。物理ブロックは、最小の書き込み単位で構成され、ページと称する。不揮発性メモリ１０１１を構成するブロック群は、管理テーブル格納ブロック群２０００、スクラッチブロック群２００１、データブロック群２００２、及び消去済みブロック群２００３のいずれか１つに分類される。
【００３０】
管理テーブル格納ブロック群２０００は、管理テーブル１０１２０〜１０１２５の一部または全部を格納する。スクラッチブロック群２００１は、メモリコントローラにより指示される書き込みデータを格納するページを提供する。データブロック群２００２は、書き込まれたデータを保持する。消去済みブロック群２００３は、ブロック消去を済ませたブロックである。
【００３１】
管理テーブル格納ブロック群２０００の各ブロックは、ブロックヘッダページ２０１０、及びその他の複数のページから構成される。その他の複数のページには、管理テーブル１０１２０〜１０１２５のデータの一部を格納することができ、このデータを格納したページを管理テーブルページ２０１１と称する。
【００３２】
スクラッチブロック群２００１の各ブロックは、ブロックヘッダページ、及びその他の複数のページから構成される。その他の複数のページには、ホスト計算機１００が書き込んだデータの一部を格納することができ、このデータを格納したページをデータページ２０１２と称する。特に、データを書き込むことができるページを含むブロックを、スクラッチブロックと称する。
【００３３】
データブロック群２００２の各ブロックは、ブロックヘッダページ、及びその他の複数のページから構成される。その他の複数のページには、ホスト計算機１００が書き込んだデータの一部を格納することができ、このデータを格納したページをデータページと称する。
【００３４】
消去済みブロック群２００３の各ブロックは、ブロックヘッダページ、及びその他の複数のページから構成される。その他の複数のページには、データを書き込み可能なページが含まれる。特に、データページと管理テーブルページのいずれも含まないブロックを、消去済みブロックと称する。
【００３５】
管理テーブル格納ブロック群２０００、スクラッチブロック群２００１、データブロック群２００２、及び消去済みブロック群２００３の各ブロックは、データが格納されていないページである空きページ２０１３を有することができる。
【００３６】
不揮発性メモリ１０１１を構成するブロックの総数は一定であるが、各ブロックが上記のブロック群２０００〜２００３いずれか１つに排他的に分類される限り、個々のブロックが属する群が動的に変更されてもよい。
【００３７】
さらに、管理テーブルの真値を格納するページを特定できるように管理する方法を用いれば、管理テーブル格納ブロック群２０００とスクラッチブロック群２００１を区別する必要はない。本実施例では、管理テーブルページ２０１１に格納するデータの特性と、データページ２０１２に格納するデータの特性の違いを明確にするために、あえてこの２つの群を分割している。
【００３８】
図３Ａは、ブロックヘッダページ２０１０に格納するデータの構成を示す図である。ブロックヘッダページ２０１０は、少なくともブロック消去回数３０００を含む。空き領域３００１には、少なくともブロックの状態を意味する情報が格納されていてよい。すなわち、空き領域３００１は、書き込み及びデータ消去を正常に実行できないことを意味するフラグ、及びエラーが発生した回数を含んでもよい。
【００３９】
図３Ｂは、データページ２０１２に格納するデータの構成を示す図である。データページ２０１２は、少なくとも、データ３０１０、ページデータ属性３０１１、論理アドレス３０１２、及び書き込みデータ番号３０１３を含む。論理アドレス３０１２は、格納したデータ３０１０をホスト計算機１００が区別するために付与したアドレスである。書き込みデータ番号３０１３は、同一の論理アドレス３０１２に対応する複数のデータ３０１０を区別することを可能にするための番号である。なお、便宜上、ページデータ属性３０１１、論理アドレス３０１２、書き込みデータ番号３０１３を合わせて、データページヘッダ情報３０１４と称する。データページヘッダ情報３０１４は、データ３０１０を一意に特徴付けるための情報である。
【００４０】
図３Ｃは、管理テーブルページ２０１１に格納するデータの構成を示す図である。管理テーブルページ２０１１は、少なくとも、データ（管理テーブル値）３０２０、ページデータ属性３０２１、管理テーブルアドレス３０２２、及び管理テーブル書き込み番号３０２３を含む。管理テーブルアドレス３０２２は、データ（管理テーブル値）３０２０に格納している管理テーブルを区別するために付与したアドレスである。管理テーブル書き込み番号３０２３は、同一の管理テーブルアドレス３０２２に対応する複数のデータ（管理テーブル値）３０２０を区別することを可能にするための番号である。なお、便宜上、ページデータ属性３０２１、管理テーブルアドレス３０２２、管理テーブル書き込み番号３０２３を合わせて、管理テーブルページヘッダ情報３０２４と称する。管理テーブルページヘッダ情報３０２４は、データ（管理テーブル値）３０２０を一意に特徴付けるための情報である。
【００４１】
図４Ａ〜図４Ｆは、不揮発性メモリ１０１１に格納するデータ構造を一意に決定するために用いる管理テーブルの構成例を示す図である。すべての管理テーブルを構成するデータ要素には、互いに重複がないように、管理アドレス番号を設定する。管理アドレス番号の一例として、メモリ１０１２に格納するアドレスを設定してもよい。また、管理テーブルを所定の書き込み単位で分割した要素ごとに、互いに重複しない適当な番号を設定してもよい。
【００４２】
図４Ａは、論理・物理アドレス変換テーブル１０１２０のデータ構造の例を示す図である。論理・物理アドレス変換テーブル１０１２０は、管理アドレス番号、論理グループ番号４００２、論理アドレス４０００、及び物理アドレス４００１を含む。物理アドレス４００１は、ホスト計算機１００が指定した論理アドレス４０００に対応するデータを格納し、物理ブロック番号及び物理ページ番号を用いて一意に指定される。論理・物理アドレス変換テーブル１０１２０は、物理アドレス４００１を管理するものである。また、論理アドレス４０００を一定量に分割した論理アドレス空間の１つ１つを、論理グループと称する。論理グループ番号４００２は、論理グループを示す番号である。
【００４３】
一例として、論理グループの数ＬＧ、及び論理グループを構成する論理アドレスの数Ｌは、次の条件を満たす限り、任意に指定することができる。すなわち、ＬＧとＬの積と所定の書き込み単位を掛けた値が、データ記録装置１０１に対してホスト計算機１００が与えた論理記録容量を超える最小の値で与えられることである。
【００４４】
図４Ｂは、スクラッチブロック管理テーブル１０１２１のデータ構造の例を示す図である。スクラッチブロック管理テーブル１０１２１は、管理アドレス番号、論理グループ番号４０１３、スクラッチブロック番号４０１０、フラグ４０１２、及び物理ブロック番号４０１１を含む。フラグ４０１２は、物理ブロック番号４０１１の利用状態を示す。論理グループ番号４０１３は、論理グループを示す番号である。スクラッチブロック管理テーブル１０１２１は、論理グループごとに割り当てられる１つまたは複数のスクラッチブロックの管理情報を示している。個々のスクラッチブロックは、スクラッチブロック番号４０１０で一意に指定され、物理ブロック番号４０１１及びフラグ４０１２で特徴付けられる。
【００４５】
図４Ｃは、データブロック管理テーブル１０１２２のデータ構造の例を示す図である。データブロック管理テーブル１０１２２は、管理アドレス番号、論理グループ番号４０２３、データブロック番号４０２０、フラグ４０２１、及び物理ブロック番号４０２２を含む。フラグ４０２１は、物理ブロック番号４０２２の利用状態を示す。論理グループ番号４０２３は、論理グループを示す番号である。データブロック管理テーブル１０１２２は、論理グループごとに割り当てられる１つまたは複数のデータブロックの管理情報を示している。個々のデータブロックは、データブロック番号４０２０で一意に指定され、物理ブロック番号４０２２及びフラグ４０２１で特徴付けられる。
【００４６】
図４Ｄは、消去済みブロック管理テーブル１０１２３のデータ構造の例を示す図である。消去済みブロック管理テーブル１０１２３は、管理アドレス番号、消去済みブロック番号４０３０、フラグ４０３１、及び物理ブロック番号４０３２を含む。フラグ４０３１は、物理ブロック番号４０３２の利用状態を示す。消去済みブロック管理テーブル１０１２３は、データ消去を済ませたブロック群を登録したものである。個々の消去済みブロックは、消去済みブロック番号４０３０で一意に指定され、物理ブロック番号４０３２及びフラグ４０３１で特徴付けられる。
【００４７】
図４Ｅは、物理ブロック管理テーブル１０１２４のデータ構造の例を示す図である。物理ブロック管理テーブル１０１２４は、ブロックの属性である管理アドレス番号、物理ブロック番号４０４０、消去回数４０４１、有効データページ数４０４２、有効データページフラグ４０４３、及び書き込み可能ページ番号４０４４を含む。有効データページフラグ４０４３は、有効データページの位置を示す。書き込み可能ページ番号４０４４は、物理ブロック番号４０４０で一意に指定されたブロックに書き込みを行えるページの位置を示す。物理ブロック管理テーブル１０１２４は、ブロックの属性を管理するので、物理ブロックの利用状態を管理するために用いられる。個々の物理ブロックは、物理ブロック番号４０４０で一意に指定され、消去回数４０４１、有効データページ数４０４２、有効データページフラグ４０４３、及び書き込み可能ページ番号４０４４で特徴付けられる。
【００４８】
図４Ｆは、ブロック履歴管理テーブル１０１２５のデータ構造の例を示す図である。ブロック履歴管理テーブル１０１２５は、２つのテーブルから構成される。１つのテーブルには、管理アドレス番号、登録履歴番号４０５０、論理グループ番号４０５１、有効フラグ４０５２、割り当て・消去フラグ４０５３、及び物理ブロック番号４０５４が含まれる。もう１つのテーブルには、管理アドレス番号、論理グループ番号、及び割り当てブロック数４０５５が含まれる。有効フラグ４０５２は、利用状態を示し、割り当て・消去フラグ４０５３は、スクラッチブロックへの割り当てを行った場合とブロック消去を実行した場合とを区別する。割り当てブロック数４０５５は、論理グループごとに割り当てたスクラッチブロックの数を示す。ブロック履歴管理テーブル１０１２５は、データ消去を済ませたブロック、及びスクラッチブロックとして割り当てたブロックを登録するものである。個々のブロックは、登録履歴番号４０５０で一意に指定され、ブロックの所属する論理グループ番号４０５１、有効フラグ４０５２、割り当て・消去フラグ４０５３、及びブロック番号４０５４で特徴付けられる。
【００４９】
ここで、ホスト計算機１００から不揮発性メモリ１０１１への、データのリードアクセス方法とライトアクセス方法について、簡単に説明する。
【００５０】
図８Ａは、ホスト計算機１００から不揮発性メモリ１０１１上のデータへのリードアクセス方法を説明する図である。
【００５１】
ホスト計算機１００から不揮発性メモリ１０１１へリードアクセス要求があると、ホスト計算機１００から見た論理アドレスは、メモリコントローラ１０１０により物理アドレスに変換される。この変換は、論理・物理アドレス変換テーブル１０１２０を用いて、論理アドレス４０００と物理アドレス４００１との対応により、行われる。図８Ａの例では、論理アドレスはＬＧ＊Ｌ−３であり、物理ブロック番号Ｂｌｙと物理ページ番号Ｐｌｘを持つ物理アドレスに変換されている。
【００５２】
不揮発性メモリ１０１１上では、データブロックのうち、物理ブロック番号がＢｌｙのブロックにアクセスし、物理ページ番号がＰｌｘのデータページのデータを読み込む。
【００５３】
図８Ｂは、ホスト計算機１００から不揮発性メモリ１０１１へのデータのライトアクセス方法を説明する図である。
【００５４】
ホスト計算機１００から不揮発性メモリ１０１１へライトアクセス要求があると、ホスト計算機１００から見た論理アドレスは、メモリコントローラ１０１０により物理アドレスに変換される。この変換は、論理・物理アドレス変換テーブル１０１２０を用いて、論理アドレス４０００と物理アドレス４００１との対応により、行われる。図８Ｂの例では、論理アドレスはＬＧ＊Ｌ−３であり、物理ブロック番号Ｂｌｚと物理ページ番号Ｐｌｔを持つ物理アドレスに変換されている。なお、物理ブロック番号と物理ページ番号は、図８Ａに示した値であるＢｌｙとＰｌｘから、ＢｌｚとＰｌｔにそれぞれ更新されている。
【００５５】
不揮発性メモリ１０１１上では、物理ブロック番号がＢｌｚのスクラッチブロックにアクセスし、物理ページ番号がＰｌｔのページ（空きページ）にデータを書き込む。データが書き込まれると、物理ページ番号がＰｌｔのページは、空きページから有効なデータページに変わる。
【００５６】
図５Ａ〜図５Ｄは、データ書き込み時の管理テーブルの更新処理過程を示す図である。特に、復元対象とする各種管理テーブルの更新方法、及び各種管理テーブルを復元する際に用いるブロック履歴管理テーブルの構築方法を示している。
【００５７】
図５Ａは、データ書き込み時の管理テーブルの更新処理における、メイン処理のフローチャートを示す図である。
【００５８】
ステップ５０００では、ホスト計算機１００が発行した書き込み論理アドレス及びデータを、メモリコントローラ１０１０が受信する。以下のステップで、書き込み可能なページを特定することに伴う管理テーブルの参照・更新処理を実行する。
【００５９】
ステップ５０１では、書き込み可能なページを特定する。図５Ｂは、ステップ５０１で行う、書き込み可能なページを特定する処理のフローチャートを示す図である。以下では、ステップ５０１の処理の詳細を、図５Ｂを用いて説明する。
【００６０】
ステップ５０１０で、スクラッチブロックの有無を確認する。すなわち、該当する論理グループにスクラッチブロックが割り当てられているかどうかを調べる。割り当てられたスクラッチブロックがある場合は、ステップ５０１３に進む。
【００６１】
割り当てられたスクラッチブロックがない場合には、ステップ５０１１で、消去済みブロックの中から１つのブロックを選択し、スクラッチブロックに割り当てる。そして、スクラッチブロック管理テーブル１０１２１、及び消去済みブロック管理テーブル１０１２３を更新する。
【００６２】
ステップ５０１２にて、ブロック履歴管理テーブル１０１２５を更新する。すなわち、ブロック履歴管理テーブル１０１２５に、有効フラグ４０５２として、物理ブロック番号４０５４が有効であることを示す値（例えば１）を設定し、割り当て・消去フラグ４０５３として、割り当てブロックであることを示す値（例えば０）を設定する。そして、割り当てた物理ブロック番号４０５４と、割り当て先となる論理グループ番号４０５１と、登録履歴番号４０５０も、ブロック履歴管理テーブル１０１２５に記録する。登録履歴番号４０５０は、書き込みを行う過程で重複のない番号であればよい。簡便さのために、１ずつ増加する自然数を順に割り当ててもよい。さらに、該当する論理グループに対応する割り当てブロック数４０５５の値を、１だけ増加させる。
【００６３】
ステップ５０１３では、スクラッチブロックとして割り当てたブロック番号を参照する。すなわち、スクラッチブロック管理テーブル１０１２１より、書き込み先となる物理ブロック番号４０１１を特定する。
【００６４】
ステップ５０１４では、特定した物理ブロック番号４０１１を用いて物理ブロック管理テーブル１０１２４を参照し、物理ブロックの書き込み可能ページ番号４０４４を取得する。これにより、該当する物理ブロックの書き込み可能なページを特定することができる。
【００６５】
以上で、ステップ５０１の処理の説明を終了する。図５Ａに戻って、ステップ５０１の次の処理であるステップ５００１から説明を続ける。
【００６６】
ステップ５００１では、ステップ５０１の結果得られたページにデータを書き込む。このページのデータ構造は図３Ｂに示しているが、データフィールド３０１０に、ステップ５０００で受信したデータを設定する。そして、ホスト計算機１００から受信したデータを格納していることを示すページデータ属性３０１１、ステップ５０００にてホスト計算機１００が指定した論理アドレス３０１２、及び同一の論理アドレス３０１２に対応するデータを区別するために一意に順序付けられた書き込みデータ番号３０１３も、ページに書き込む。
【００６７】
ステップ５０２では、ステップ５００１でのページへの書き込み後に、各種管理テーブルを更新する。図５Ｃは、ステップ５０２で行う、各種管理テーブルを更新する処理のフローチャートを示す図である。以下では、ステップ５０２の処理の詳細を、図５Ｃを用いて説明する。
【００６８】
ステップ５０２０で、書き込みを行ったスクラッチブロック内に空きページが残っていることを確認する。
【００６９】
空きページがある場合には、ステップ５０２３に遷移し、該当するスクラッチブロックの物理ブロック管理テーブル１０１２４内の、有効データページ数４０４２、有効データページフラグ４０４３、及び書き込み可能ページ番号４０４４を更新する。
【００７０】
空きページがない場合には、ステップ５０２１に遷移し、該当するスクラッチブロックをデータブロック管理テーブル１０１２２に登録する。さらに、スクラッチブロック管理テーブル１０１２１において、該当ブロックのフラグ４０１２を無効であることを示す値に設定し、このブロックを削除する。
【００７１】
ステップ５０２３またはステップ５０２１から引き続き、ステップ５０２２に遷移し、更新元データページを無効にし、更新先データページを有効にすることで、論理・物理アドレス変換テーブル１０１２０と物理ブロック管理テーブル１０１２４を更新する。
【００７２】
ステップ５０２２では、論理・物理アドレス変換テーブル１０１２０において、ライトアクセス対象とした論理アドレス４０００に対応する更新元データページの物理アドレス４００１を参照し、この物理アドレス４００１に対応する物理ブロック管理テーブル１０１２４の情報を更新する。つまり、有効データページ数４０４２を１だけ減算し、更新元データページに対応するページ位置を示す有効データページフラグ４０４３を無効であることを示す値に更新する。併せて、論理・物理アドレス変換テーブル１０１２０において、ライトアクセス対象とした論理アドレス４０００に対応する更新元データページの物理アドレス４００１を、ステップ５０１３及び５０１４（図５Ｂ参照）にて特定した書き込み先の物理アドレスに書き換える。
【００７３】
以上で、ステップ５０２の処理の説明を終了する。図５Ａに戻って、ステップ５０２の次の処理であるステップ５００２から説明を続ける。
【００７４】
ステップ５００２では、ホスト計算機１００に書き込みが終了したことを報告する。
【００７５】
最後に、ステップ５０３で、必要に応じて各種管理テーブルを不揮発性メモリ１０１１に書き込んで保存する。図５Ｄは、ステップ５０３で行う、各種管理テーブルを保存する処理のフローチャートを示す図である。以下では、ステップ５０３の処理の詳細を、図５Ｄを用いて説明する。
【００７６】
ステップ５０３０で、データを書き込む過程で、ブロック履歴管理テーブル１０１２５を更新したこと（図５Ｂのステップ５０１２を実行したこと）を確認する。書き込み先のスクラッチブロックが割り当てられている場合には、ブロック履歴管理テーブル１０１２５が更新されてなく、ステップ５０３を終了する。
【００７７】
ブロック履歴管理テーブル１０１２５が更新された場合には、ステップ５０３１で、ブロック履歴管理テーブル１０１２５を不揮発性メモリ１０１１に書き込む。図３Ｃに示した管理テーブルページ２０１１のデータフィールド３０２０に、更新した部分を含むブロック履歴管理テーブル１０１２５の少なくとも一部を設定し、物理ブロック管理テーブル１０１２４を参照して管理テーブル格納ブロック群２０００に含まれるブロックで空きページを含むブロックを任意に１つ選択し、書き込み可能ページ番号４０４４で指定される空きページに管理テーブルページを書き込む。この際、管理テーブルの値をデータフィールド３０２０に格納していることを示すページデータ属性３０２１、データフィールド３０２０に格納した管理テーブルの領域を一意に指定する管理テーブルアドレス３０２２、及び同一の管理テーブルアドレス３０２２を区別するために一意に順序付けられた管理テーブル書き込み番号３０２３と共に書き込む。
【００７８】
ステップ５０３２では、物理ブロック管理テーブル１０１２４の更新箇所である、有効データページ数４０４２、有効データページフラグ４０４３、及び書き込み可能ページ番号４０４４を更新する。
【００７９】
ステップ５０３３では、ブロック履歴管理テーブル１０１２５内の割り当てブロック数４０５５の総和が、予め定めた上限値に到達したかどうかを確認する。この上限値は、一例として、データ記録装置１０１の起動後に、各種管理テーブルを復元するために設定された時間を考慮して決定してもよい。
【００８０】
なお、割り当てブロック数４０５５の総和が予め定めた上限値に到達した場合には、各種管理テーブルを不揮発性メモリ１０１１に書き込んで保存するので、「割り当てブロック数の総和が予め定めた上限値に到達する」ことを「保存条件」と呼ぶ。
【００８１】
この割り当てブロック数４０５５は、データ書き込み時に到達するステップ５０１１（図５Ｂ参照）において、該当する論理グループに属するスクラッチブロックを割り当てた時に更新される値である。各論理グループへのデータ書き込み頻度が高い論理グループは、スクラッチブロックが割り当てられる頻度が高く、割り当てブロック数４０５５が上限値に到達する頻度が高くなる。すなわち、管理テーブルの更新頻度が高くなる。
【００８２】
一方、データ書き込み頻度が低い論理グループは、スクラッチブロックが割り当てられる頻度が低く、割り当てブロック数４０５５が上限値に到達する頻度が低くなる。すなわち、管理テーブルの更新頻度が低くなる。
【００８３】
従って、割り当てブロック数４０５５により、管理テーブルの更新頻度がわかる。
【００８４】
このように「保存条件」を設定することにより、データ書き込みに伴い発生する管理テーブルのうち、更新頻度が高い一部分だけを選択的に不揮発性メモリに保存することができるようになる。このような保存方法を用いると、更新されない管理テーブルを保存せずに済むため、管理テーブルを不揮発性メモリ１０１１に書き込むことに伴う、ホスト計算機１００から見た応答時間の増大を防ぐことができる。
【００８５】
なお、管理テーブルのうち、更新頻度が高い一部分だけを選択する方法としては、一例として、更新頻度の基準値を予め定めておき、管理テーブルの更新頻度がこの基準値より大きいものを選択することができる。
【００８６】
割り当てブロック数４０５５の総和が、予め定めた上限値に到達していない場合には、ステップ５０３を終了する。予め定めた上限値に到達した場合には、ステップ５０３４０に遷移する。
【００８７】
ステップ５０３４０では、保存対象とする管理テーブルを選択する。具体的には、割り当てブロック数４０５５が多い論理グループ番号を、１つまたは複数選択する。
【００８８】
ステップ５０３４１にて、選択した管理テーブルを不揮発性メモリ１０１１に書き込む。具体的には、選択した論理グループ番号に属する論理・物理アドレス変換テーブル１０１２０の一部と、選択した論理グループ番号に属するデータブロック管理テーブル１０１２２の一部と、物理ブロック管理テーブル１０１２４のうち、保存対象とするデータブロック管理テーブル１０１２２に登録された物理ブロックの情報を、管理テーブルページ２０１１の構成に従って、管理テーブル格納ブロック群２０００内の空きページに書き込む。
【００８９】
ステップ５０３４２にて、管理テーブルページ２０１１を書き込んだ物理ブロックに対応する物理ブロック管理テーブル１０１２４を更新する。
【００９０】
ステップ５０３５では、ブロック履歴管理テーブル１０１２５を更新する。具体的には、ブロック履歴管理テーブル１０１２５から、保存対象として選択した論理グループ番号４０５１を有するブロックに対応する有効フラグ４０５２を、無効であることを示す値（例えば０）に設定する。併せて、選択した論理グループ番号４０５１に対応する割り当てブロック数４０５５を０にクリアする。
【００９１】
さて、ある論理グループに対応する割り当てブロック数４０５５が多いことは、当該論理グループに多くのスクラッチブロックが割り当てられ、高い頻度でデータ更新が発生したことを意味する。よって、選択的に割り当てブロック数４０５５が多い論理グループに対応する管理テーブルを保存することで、データ更新頻度が低い管理テーブルを保存する頻度を低減させることができる。
【００９２】
ステップ５０３６では、消去済みブロック管理テーブル１０１２３を保存するための既定の条件を満たしていることを確認する。既定の条件を満たしていない場合には、ステップ５０３を終了する。既定の条件を満たしている場合には、ステップ５０３７に遷移する。
【００９３】
既定の条件とは、ブロック履歴管理テーブル１０１２５に登録したブロックの登録履歴番号４０５０の最大値（Ａと表記する）が、前回に消去済みブロック管理テーブル１０１２３を保存した時に使用した最大値（Ｃと表記する）と比較して、十分に大きな値であることである。十分に大きな値であるかどうかの判定方法としては、一例として、判定のための基準値を予め定めておき、最大値Ａがこの基準値より大きくなれば十分に大きな値に達したとみなすことができる。ブロック履歴管理テーブル１０１２５に登録した情報は登録履歴番号４０５０により一意に順序付けされるので、消去済みブロック管理テーブル１０１２３の保存頻度を自由に制御できることは自明である。一例として、簡便さのために、登録履歴番号４０５０の最大値Ａを閾値として設定し、これが予め定めた一定値Ｂの倍数となることを既定の条件としてもよい。
【００９４】
特に、ブロック履歴管理テーブル１０１２５に登録されたブロックの登録履歴番号４０５０が、前回に消去済みブロック管理テーブル１０１２３を保存した際に使用した最大値Ｃを上回るブロックが、前回に保存した後に消去済みブロック管理テーブル１０１２３に登録されたブロックか、またはスクラッチブロックとして割り当てられて消去済みブロック管理テーブル１０１２３から削除されたブロックである。
【００９５】
ステップ５０３７では、消去済みブロック管理テーブル１０１２３の少なくとも一部を、不揮発性メモリ１０１１に保存する。具体的には、消去済みブロック管理テーブル１０１２３の少なくとも一部をデータフィールド３０２０（図３Ｃ参照）に設定する。そして、物理ブロック管理テーブル１０１２４を参照して、管理テーブル格納ブロック群２０００に含まれるブロックで空きページを含むブロックを任意に１つ選択し、書き込み可能ページ番号４０４４で指定される空きページに管理テーブルページ２０１１（図２参照）を書き込む。
【００９６】
ステップ５０３８にて、ブロック履歴管理テーブル１０１２５を更新する。具体的には、ブロック履歴管理テーブル１０１２５において、有効フラグ４０５２が無効であることを示す値（例えば０）であり、かつ、登録履歴番号４０５０がステップ５０３６で既定の条件に用いた値Ａを下回るものを削除する。そして、保存対象として選択した論理グループ番号４０５１に対応する割り当てブロック数４０５５を再計算する。
【００９７】
ステップ５０３９０では、ステップ５０３１と同様に、ブロック履歴管理テーブル１０１２５を不揮発性メモリ１０１１に書き込む。
【００９８】
ステップ５０３９１では、ステップ５０３２と同様に、物理ブロック管理テーブル１０１２４を更新する。
【００９９】
以上で、ステップ５０３の処理の説明を終了する。図５Ａ〜図５Ｄに示したステップを経て、データ書き込み時の処理が終了する。
【０１００】
図６は、ブロック消去時の管理テーブルの更新処理過程のフローチャートを示す図である。
【０１０１】
ステップ６００にて、ホスト計算機１００から書き込み論理アドレスとデータを受信し、書き込み要求を受け付ける。
【０１０２】
ステップ６０１で、ブロック消去処理を実行することを確認する。消去済みブロック管理テーブル１０１２３に登録された有効なブロックの数（消去済みブロックの残数）が、予め定めた下限値より大きい場合は、ステップ６０２以後の処理を行わず、そのまま書き込み処理を継続するために、図５Ａで示した処理に遷移する。消去済みブロックの残数が予め定めた既定値以下である場合、ステップ６０２に遷移する。
【０１０３】
ステップ６０２では、データブロックの中から消去対象のブロックを選択する。選択方法の一例としては、有効な登録データブロックの中から、有効データページ数４０４２が少ないものを選択すればよい。選択方法としては、一例として、選択するための基準値を予め定めておき、有効データページ数４０４２がこの基準値より小さいものを選択することができる。
【０１０４】
ステップ６０３では、選択したデータブロックに格納されている有効データページ数が０となるまで、ステップ６０４を再帰的に実行する。
【０１０５】
ステップ６０４では、選択したデータブロックに格納されている有効データページを、スクラッチブロックにコピーする。ステップ６０４の実行後、ステップ６０３に戻り、物理ブロック管理テーブル１０１２４上の有効データページ数４０４２を参照し、有効データページ数４０４２が０であることを確認した時点で、ステップ６０５に遷移する。
【０１０６】
ステップ６０５では、選択したブロックに対してブロック消去コマンドを発行し、選択したブロックを消去する。引き続いて、例えば当該ブロックの先頭ページに、ブロックヘッダページ２０１０に示した構成（図３Ａ参照）でブロック消去回数３０００を記録する。
【０１０７】
ステップ６０６にて、データブロック管理テーブル１０１２２、物理ブロック管理テーブル１０１２４、及び消去済みブロック管理テーブル１０１２３を更新する。具体的には、データブロック管理テーブル１０１２２から、ブロック消去を実行した物理ブロック番号４０２２に対応するフラグ４０２１を、無効であることを示す値（例えば０）に設定する。さらに、物理ブロック管理テーブル１０１２４において、ブロック消去した物理ブロック番号４０４０に対応する情報である消去回数４０４１を増加させ、有効データページ数４０４２を０に設定し、有効データページフラグ４０４３を０に設定し、書き込み可能ページ番号４０４４を１に設定する。さらに、消去済みブロック管理テーブル１０１２３において、ブロック消去を済ませたブロックの番号を消去済みブロック番号４０３０に登録する。
【０１０８】
ステップ６０７では、ブロック履歴管理テーブル１０１２５を更新する。ブロック消去を済ませた物理ブロック番号４０５４を、所属していた論理グループ番号４０５１と共に、ブロック履歴管理テーブル１０１２５に登録する。このとき、有効フラグ４０５２に１を設定し、割り当て・消去フラグ４０５３には、消去済みブロックであることを示す値（一例として１）を設定する。登録履歴番号４０５０は、複数のブロック番号の間で重複がない値であればよく、例えば一意に増加する自然数を順次割り当ててもよい。
【０１０９】
ステップ６０８では、各種管理テーブルを保存する。保存には、図５Ａに示したデータ書き込み時のフローチャートにおけるステップ５０３と同じ処理を行う。詳細には、図５Ｄに示した各種管理テーブルを保存する処理のフローチャートに示した処理を行う。
【０１１０】
図５Ａ〜図５Ｄと図６を用いて、データ記録装置に対する書き込み処理の過程で行う、各種管理テーブルの構築、更新方法を示した。
【０１１１】
図７Ａ〜図７Ｃは、管理テーブルの復元処理のフローチャートを示す図である。
【０１１２】
図７Ａは、管理テーブルの復元処理における、メイン処理のフローチャートを示す図である。図７Ａには、電源をデータ記録装置１０１に入力した後、各種管理テーブルを復元し、ホスト計算機１００がデータ記録装置１０１に対して書き込みを再開できる状態に到達するまでの過程を示している。
【０１１３】
ステップ７００では、管理テーブル格納ブロック群２０００に保存した論理・物理アドレス変換テーブル１０１２０、データブロック管理テーブル１０１２２、消去済みブロック管理テーブル１０１２３、物理ブロック管理テーブル１０１２４、及びブロック履歴管理テーブル１０１２５を、不揮発性メモリ１０１１から読み出し、メモリ１０１２に記録する。
【０１１４】
これらの管理テーブルは、電源が遮断された時点で保存されている管理テーブルのうち、最新の管理テーブルである。すなわち、図５Ａ〜図５Ｄ及び図６のフローチャートにおいて、管理テーブルページ２０１１の構成（図３Ｃ参照）に従って、管理テーブルアドレス３０２２と管理テーブル書き込み番号３０２３と共に所定の書き込み単位で記録した管理テーブルのうち、管理テーブル書き込み番号３０２３が最新のデータである管理テーブルである。
【０１１５】
電源が遮断された時点での最新の管理テーブルを読み出す方法の例として、管理テーブルアドレス３０２２と管理テーブル書き込み番号３０２３を用いて、最新の管理テーブルデータ３０２０を取得する方法がある。他にも、メモリ１０１２に加えて不揮発性メモリをデータ記録装置１０１に搭載し、最新の管理テーブルの格納位置を示すポインタ値をこの不揮発性メモリに格納する方法がある。いずれの方法であっても、電源が遮断される前に不揮発性メモリ１０１１に最後に保存された管理テーブル群を、管理テーブル格納ブロック群２０００からメモリ１０１２に読み出すことができればよい。
【０１１６】
ステップ７０１では、論理グループを１つ選択し、ステップ７００で取得した最新のブロック履歴管理テーブル１０１２５を用いて、選択した論理グループごとに、論理・物理アドレス変換テーブル１０１２０、スクラッチブロック管理テーブル１０１２１、データブロック管理テーブル１０１２２、及び物理ブロック管理テーブル１０１２４を復元する。
【０１１７】
図７Ｂは、ステップ７０１で行う、これらの管理テーブルを復元する処理のフローチャートを示す図である。
【０１１８】
ステップ７０１００では、ステップ７０１で選択した論理グループを含むブロックが、ブロック履歴管理テーブル１０１２５に登録されているかどうかを判定する。すなわち、選択した論理グループの番号をブロック履歴管理テーブル１０１２５の論理グループ番号４０５１に有するブロックがあるかどうかを判定する。選択した論理グループがブロック履歴管理テーブル１０１２５に登録されていない場合には、ステップ７０１１１に遷移し、登録されている場合には、ステップ７０１０１に遷移する。
【０１１９】
ステップ７０１１１では、選択した論理グループに属する管理テーブルの復元処理を終了し、復元対象とする次の論理グループを選択する。
【０１２０】
ステップ７０１０１では、ブロック履歴管理テーブル１０１２５において、登録履歴番号４０５０が古い順に、有効フラグ４０５２が、有効であることを示す値（例えば１）であるブロックを１つ選択する。
【０１２１】
ステップ７０１０２では、割り当て・消去フラグ４０５３を用いて、選択したブロックがスクラッチブロックに割り当てられているか判定する。このブロック（選択した割り当てブロック）には、ステップ７００で読み出した管理テーブルを不揮発性メモリ１０１１に保存した時点より後の、データ書き込みを伴う更新データが格納されている。割り当て・消去フラグ４０５３により、選択したブロックがスクラッチブロックとして割り当てられている場合（割り当てブロックである場合）は、ステップ７０１０３に遷移する。選択したブロックがスクラッチブロックに割り当てられていない場合は、割り当て・消去フラグ４０５３が消去済みブロックであることを示している場合であり、ステップ７０１１２に遷移する。
【０１２２】
ステップ７０１１２とステップ７０１１３は、選択したブロックが消去済みブロックである場合である。ステップ７０１１２では、データブロック管理テーブル１０１２２から選択したブロックを削除する。ステップ７０１１３では、選択したブロックに対応する物理ブロック管理テーブル１０１２４を更新し、ステップ７０１０１に戻る。特に、消去回数４０４１を１だけ増加させる。
【０１２３】
ステップ７０１０３〜ステップ７０１１０は、選択したブロックが割り当てブロックである場合である。
【０１２４】
ステップ７０１０３では、選択したブロックのデータページ２０１２のデータページヘッダ情報３０１４を取得するためのページ番号を選択する。
【０１２５】
ステップ７０１０４では、ステップ７０１０３で選択したページ番号に対応するデータページ２０１２において、データページヘッダ情報３０１４が記録されていることを確認する。データページヘッダ情報３０１４が記録されていない場合は、ステップ７０１１４に遷移し、記録されている場合は、ステップ７０１０５に遷移する。
【０１２６】
ステップ７０１１４において、選択したブロックは、スクラッチブロックとして割り当てられた有効なブロックであるため、スクラッチブロック管理テーブル１０１２１に登録する。
【０１２７】
ステップ７０１０５では、データページヘッダ情報３０１４を取得し、データページヘッダ情報３０１４から論理アドレス３０１２と書き込みデータ番号３０１３を取得する。
【０１２８】
ステップ７０１０７では、取得した論理アドレス３０１２を用いて、論理アドレス３０１２に対応する物理アドレス、すなわち、ステップ７０１０３でデータページヘッダ情報３０１４の読み込みを行った物理アドレスを、論理・物理アドレス変換テーブル１０１２０に登録する。
【０１２９】
ステップ７０１０８では、物理ブロック管理テーブル１０１２４を更新する。
【０１３０】
なお、特許文献３では、書き込みデータ番号３０１３を用いて、論理・物理アドレス変換テーブル１０１２０に登録されている物理アドレス４００１の新旧を判定する方法が示されているが、本実施例では、この手続きを必要としない。なぜならば、図７Ａのステップ７００で保存した論理・物理アドレス変換テーブル１０１２０の状態から更新があった場合には、ブロック履歴管理テーブル１０１２５にスクラッチブロックが登録された順でデータが書き込まれるため、ステップ７０１０１において、ブロック履歴管理テーブル１０１２５の登録履歴番号４０５０の順で有効な割り当てブロックを読み出すことで、更新順序を決定することが可能であるからである。
【０１３１】
ステップ７０１０９では、データページヘッダ情報３０１４を取得したページが、ブロックの最終ページであるかを判定する。ブロックの最終ページでない場合は、ステップ７０１０３に遷移する。ブロックの最終ページである場合は、ステップ７０１１０に遷移する。
【０１３２】
ステップ７０１１０では、当該ブロックは、データブロックであるため、データブロック管理テーブル１０１２２に登録する。
【０１３３】
図７Ｂに示した処理を全論理グループに対して実行することで、論理・物理アドレス変換テーブル１０１２０、スクラッチブロック管理テーブル１０１２１、データブロック管理テーブル１０１２２、及び物理ブロック管理テーブル１０１２４を復元することができる。
【０１３４】
以上、図７Ａのステップ７０１での処理を説明した。図７Ａでは、ステップ７０１に引き続き、ステップ７０２に遷移する。
【０１３５】
ステップ７０２では、消去済みブロック管理テーブル１０１２３を復元する。
【０１３６】
図７Ｃは、ステップ７０２で行う、消去済みブロック管理テーブル１０１２３を復元する処理のフローチャートを示す図である。
【０１３７】
ステップ８００では、ステップ７０１に引き続き、ブロック履歴管理テーブル１０１２５に登録された登録履歴番号４０５０のうち、最大値を取得する。
【０１３８】
ステップ８０１では、復元対象とするブロックの登録履歴番号４０５０の範囲を設定する。この範囲は、図７Ａのステップ７００で消去済みブロック管理テーブル１０１２３を読み出した時点から後に、消去済みブロックに登録されたかスクラッチブロックに割り当てられたブロックの登録履歴番号の範囲である。すなわち、登録履歴番号４０５０の最大値と、図５Ｄのステップ５０３６で用いた既定の条件（消去済みブロック管理テーブル１０１２３を不揮発性メモリ１０１１に保存するための条件）とを用いて、ステップ５０３６で示した登録履歴番号４０５０の最大値Ｃ＋１から、復元対象とするブロックの登録履歴番号４０５０の最大値を設定する。
【０１３９】
ステップ８０２では、ブロック履歴管理テーブル１０１２５から、登録履歴番号４０５０がステップ８０１で設定した範囲にある登録ブロックを１つ選択する。ブロック履歴管理テーブル１０１２５に登録されたブロックのうち、この範囲にあるブロックを、登録履歴番号順に１つずつ読み出す。
【０１４０】
ステップ８０３では、読み出したブロックが、スクラッチブロックに割り当てられたブロック（割り当てブロック）か、ブロック履歴管理テーブル１０１２５の割り当て・消去フラグ４０５３を用いて判定する。割り当てブロックの場合は、ステップ８０６に遷移し、割り当てブロックでない場合は、ステップ８０４に遷移する。
【０１４１】
ステップ８０６では、読み出したブロックが割り当てブロックであるので、読み出したブロックを、ステップ７００で読み出した消去済みブロック管理テーブル１０１２３から削除する。この後、ステップ８０２に戻る。
【０１４２】
ステップ８０４では、読み出したブロックが割り当てブロックでない場合である。この場合、読み出したブロックは消去済みブロックであるので、消去済みブロック管理テーブル１０１２３に登録する。具体的には、消去済みブロック管理テーブル１０１２３で、フラグ４０３１が無効である物理ブロック番号４０３２に登録し、フラグ４０３１を有効にする。
【０１４３】
ステップ８０５では、ステップ８０１で設定した範囲に、ブロック履歴管理テーブル１０１２５に登録しているブロックが残っているか確認する。ブロックが残っている場合は、ステップ８０２に戻る。ステップ８０１で設定した範囲にブロックがなくなった時点で、消去済みブロック管理テーブル１０１２３の復元が終了する。
【０１４４】
以上、図７Ａのステップ７０２での処理を説明した。
【０１４５】
図７Ｂと図７Ｃに示す方法で管理テーブルの復元処理を終えたら、図７Ａのステップ７０３に遷移する。この時点で、ホスト計算機１００からのデータ読み出し・書き換え要求を受け付けることができるようになる。
【符号の説明】
【０１４６】
１００…ホスト計算機、１０１…データ記録装置、１０２…データパス、２００…ブロック、１０１０…メモリコントローラ、１０１１…不揮発性メモリ、１０１２…メモリ、２０００…管理テーブル格納ブロック群、２００１…スクラッチブロック群、２００２…データブロック群、２００３…消去済みブロック群、２０１０…ブロックヘッダページ、２０１１…管理テーブルページ、２０１２…データページ、２０１３…空きページ、３０００…ブロック消去回数、３００１…空き領域、３０１０…データ、３０１１…ページデータ属性、３０１２…論理アドレス、３０１３…書き込みデータ番号、３０１４…データページヘッダ情報、３０２０…データ、３０２１…ページデータ属性、３０２２…管理テーブルアドレス、３０２３…管理テーブル書き込み番号、３０２４…管理テーブルページヘッダ情報、４０００…論理アドレス、４００１…物理アドレス、４００２…論理グループ番号、４０１０…スクラッチブロック番号、４０１１…物理ブロック番号、４０１２…フラグ、４０１３…論理グループ番号、４０２０…データブロック番号、４０２１…フラグ、４０２２…物理ブロック番号、４０２３…論理グループ番号、４０３０…消去済みブロック番号、４０３１…フラグ、４０３２…物理ブロック番号、４０４０…物理ブロック番号、４０４１…消去回数、４０４２…有効データページ数、４０４３…有効データページフラグ、４０４４…書き込み可能ページ番号、４０５０…登録履歴番号、４０５１…論理グループ番号、４０５２…有効フラグ、４０５３…割り当て・消去フラグ、４０５４…物理ブロック番号、４０５５…割り当てブロック数、１０１２０…論理・物理アドレス変換テーブル、１０１２１…スクラッチブロック管理テーブル、１０１２２…データブロック管理テーブル、１０１２３…消去済みブロック管理テーブル、１０１２４…物理ブロック管理テーブル、１０１２５…ブロック履歴管理テーブル。
【図１】
0005570406.tif 000002
【図２】
0005570406.tif 000003
【図３Ａ】
0005570406.tif 000004
【図３Ｂ】
0005570406.tif 000005
【図３Ｃ】
0005570406.tif 000006
【図４Ａ】
0005570406.tif 000007
【図４Ｂ】
0005570406.tif 000008
【図４Ｃ】
0005570406.tif 000009
【図４Ｄ】
0005570406.tif 000010
【図４Ｅ】
0005570406.tif 000011
【図４Ｆ】
0005570406.tif 000012
【図５Ａ】
0005570406.tif 000013
【図５Ｂ】
0005570406.tif 000014
【図５Ｃ】
0005570406.tif 000015
【図５Ｄ】
0005570406.tif 000016
【図６】
0005570406.tif 000017
【図７Ａ】
0005570406.tif 000018
【図７Ｂ】
0005570406.tif 000019
【図７Ｃ】
0005570406.tif 000020
【図８Ａ】
0005570406.tif 000021
【図８Ｂ】
0005570406.tif 000022