(57)【特許請求の範囲】
【請求項１】
ブロックをデータ消去単位とするフラッシュメモリと、
前記フラッシュメモリに対するコンパクション処理を実行するコンパクション処理手段を含むコントローラとを具備し、
前記コンパクション処理手段は、
前記フラッシュメモリの使用可能な記憶容量及びブロック内の有効データ量に基づいてブロック内の有効データ量の閾値を算出し、前記使用可能な記憶容量の変動に応じて前記閾値を更新した最新の閾値を算出する閾値算出手段と、
前記閾値算出手段から取得した前記最新の閾値に基づいて相対的に有効データ量が少ないブロックを、前記コンパクション処理の対象ブロックとして検索する検索手段と
を有するデータ記憶装置。
【請求項２】
前記閾値算出手段は、
前記使用可能な記憶容量の割合を示す余裕率と前記閾値を算出するための有効データ密度とを対応付けしたテーブル情報を有し、
前記テーブル情報を参照し、前記余裕率の変動に応じた前記有効データ密度から前記最新の閾値を算出する請求項１に記載のデータ記憶装置。
【請求項３】
前記閾値算出手段は、前記閾値を記憶するメモリ手段を有し、前記メモリ手段に記憶した閾値を前記余裕率の変動に応じて更新し、
前記検索手段は、前記閾値算出手段から前記メモリ手段に記憶されている最新の閾値を取得し、前記最新の閾値に基づいて前記コンパクション処理の対象ブロックを検索する請求項２に記載のデータ記憶装置。
【請求項４】
前記閾値算出手段は、
前記フラッシュメモリの使用可能なブロック群の平均有効データ量を算出し、当該平均値に基づいて前記最新の閾値を算出する請求項１に記載のデータ記憶装置。
【請求項５】
前記検索手段は、
前記最新の閾値より小さい有効データ量の各ブロックの中で、前記有効データ量の小さい順に所定数のブロックを、前記コンパクション処理の対象ブロックとして選定する請求項１から請求項４のいずれか１項に記載のデータ記憶装置。
【請求項６】
前記コントローラは、
前記コンパクション処理手段により検索されたコンパクション処理の対象ブロックに対して前記コンパクション処理を実行するコンパクション処理実行手段を有し、
前記コンパクション処理実行手段は、
前記コンパクション処理の対象ブロックから有効データを検索し、
前記有効データを他のブロックに書き直す請求項１から請求項５のいずれか１項に記載のデータ記憶装置。
【請求項７】
前記コントローラは、
前記コンパクション処理実行手段による前記コンパクション処理の完了後に、前記コンパクション処理の対象ブロックを消去処理する手段と、
前記消去処理後の対象ブロックをフリーブロックとして管理するブロック管理手段とを有する請求項６に記載のデータ記憶装置。
【請求項８】
ブロックをデータ消去単位とするフラッシュメモリを使用するデータ記憶装置に適用するメモリ制御装置であって、
前記フラッシュメモリに対するコンパクション処理を実行するコンパクション処理手段を含むコントローラを具備し、
前記コンパクション処理手段は、
前記フラッシュメモリの使用可能な記憶容量及びブロック内の有効データ量に基づいてブロック内の有効データ量の閾値を算出し、前記使用可能な記憶容量の変動に応じて前記閾値を更新した最新の閾値を算出する閾値算出手段と、
前記閾値算出手段から取得した前記最新の閾値に基づいて相対的に有効データ量が少ないブロックを、前記コンパクション処理の対象ブロックとして検索する検索手段と
を有するメモリ制御装置。
【請求項９】
ブロックをデータ消去単位とするフラッシュメモリ及び前記フラッシュメモリに対するコンパクション処理を実行するコントローラを含むデータ記憶装置に適用するメモリ制御方法であって、
前記フラッシュメモリの使用可能な記憶容量及びブロック内の有効データ量に基づいてブロック内の有効データ量の閾値を算出し、
前記使用可能な記憶容量の変動に応じて前記閾値を更新した最新の閾値を算出し、
前記最新の閾値に基づいて相対的に有効データ量が少ないブロックを、前記コンパクション処理の対象ブロックとして検索するメモリ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、不揮発性メモリを使用するデータ記憶装置、メモリ制御装置及びメモリ制御方法に関する。
【背景技術】
【０００２】
近年、データ記憶装置として、書き換え可能な不揮発性メモリであるNAND型フラッシュメモリ（以下、単にフラッシュメモリと表記する場合がある）を使用するＳＳＤ（solid state drive）の開発が推進されている。
【０００３】
フラッシュメモリは、データの書き込みを行なう記憶領域に対して、その書き込みの前にデータの消去処理が必要である。また、フラッシュメモリは、書き込み単位（ページ単位）と消去処理の消去単位（ブロック単位）とが異なる。ここで、１ブロックは、例えば６４ページに相当する記憶領域である。
【０００４】
ＳＳＤでは、フラッシュメモリに対するデータの書き換えが進むと、無効なデータ（最新でないデータ）により、ブロック内は有効データを格納できない記憶領域の割合が増大する。ＳＳＤは、ブロック内の記憶領域を有効活用するために、コンパクション（compaction）処理を実行する。コンパクション処理とは、有効データの記憶領域が低密度になったブロックから有効データを集めて、別のブロックに書き直す処理である。コンパクション対象ブロックは、書き直し処理後の消去処理により、有効活用できる記憶領域として再生することになる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００９−２１１２１９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
コンパクション処理を効果的に行うためには、コンパクション対象ブロックとして、より低密度のブロックを検索することが重要である。コンパクション対象ブロックの検索処理は、コンパクション処理の性能に大きく影響する。従来、有効トラック数別に全ブロックＩＤを分類する管理テーブルを用いた検索方法が提案されているが、管理テーブルの専用メモリ領域が多く必要となるなど、必ずしも有効な検索処理ではない。
【０００７】
本発明の目的は、有効なコンパクション対象ブロックの検索処理を実現することで、コンパクション処理の効率化を図ることができるデータ記憶装置を提供することにある。
【課題を解決するための手段】
【０００８】
実施形態によれば、データ記憶装置は、ブロックをデータ消去単位とするフラッシュメモリとコントローラとを具備する。前記コントローラは、前記フラッシュメモリに対するコンパクション処理を実行するコンパクション処理手段を含む。前記コンパクション処理手段は、前記フラッシュメモリの使用可能な記憶容量及びブロック内の有効データ量に基づいてブロック内の有効データ量の閾値を算出し、前記使用可能な記憶容量の変動に応じて前記閾値を更新した最新の閾値を算出する閾値算出手段と、前記閾値算出手段から取得した前記最新の閾値に基づいて相対的に有効データ量が少ないブロックを、前記コンパクション処理の対象ブロックとして検索する検索手段とを有する。
【図面の簡単な説明】
【０００９】
【図１】実施形態に関するＳＳＤの構成を説明するためのブロック図。
【図２】実施形態に関するフラッシュメモリコントローラの構成を説明するためのブロック図。
【図３】実施形態に関する有効クラスタ数閾値テーブルを説明するための図。
【図４】実施形態に関する有効クラスタ数の閾値算出処理を説明するためのフローチャート。
【図５】実施形態に関するコンパクション対象ブロックの検索処理を説明するためのフローチャート。
【図６】実施形態に関するコンパクション処理を説明するためのフローチャート。
【発明を実施するための形態】
【００１０】
以下図面を参照して、実施形態を説明する。
【００１１】
［データ記憶装置の構成］
図１は、実施形態に係るデータ記憶装置の構成を示すブロック図である。
【００１２】
図１に示すように、データ記憶装置はＳＳＤ（solid state drive）であり、ＳＳＤコントローラ１０と、不揮発性メモリのNAND型フラッシュメモリ（以下、フラッシュメモリ）１１とを有する。フラッシュメモリ１１はＳＳＤのデータ記憶媒体であり、例えばチャネル単位またはパッケージ単位での外付け接続が可能である。
【００１３】
ＳＳＤコントローラ１０は、フラッシュメモリコントローラ１２と、ホストインターフェース（ホストＩ／Ｆ）１３と、バッファ管理モジュール１４と、バッファメモリ（ＤＲＡＭ）１５と、マイクロプロセッサ（ＣＰＵ）１６とを有する。ＣＰＵ１６は、ＳＳＤコントローラ１０の全体的制御を実行する。ＤＲＡＭ１５は、バッファメモリとして動作し、論理／物理アドレスの変換テーブルやホストシステム１から転送されるデータなどを保持する。
【００１４】
ホストＩ／Ｆ１３は、ホストシステム１とＳＳＤコントローラ１０との間で、データ、コマンド、アドレスの転送を制御する。ホストシステム１は、例えばＳＡＴＡ（Serial ATA）規格のインターフェースを含むコンピュータなどである。バッファ管理モジュール１４はバッファメモリ（ＤＲＡＭ）１５を制御し、ホストＩ／Ｆ１３とバッファメモリ１５間のデータ転送を制御する。また、バッファ管理モジュール１４は、フラッシュメモリコントローラ１２とバッファメモリ１５間のデータ転送を制御する。
【００１５】
フラッシュメモリコントローラ１２は、入出力インターフェース（単にインターフェース）２０と、メモリアクセスコントローラ２１とを含む。インターフェース２０は、フラッシュメモリ１１とメモリアクセスコントローラ２１との間でのデータの入出力、及びフラッシュメモリ１１とコンパクションモジュール２４との間でのデータの入出力を行なう。メモリアクセスコントローラ２１は、インターフェース２０を介してフラッシュメモリ１１に対するデータの読み出し動作及び書き込み動作を制御する。
【００１６】
メモリアクセスコントローラ２１は、コントローラ２２と、ブロック管理モジュール２３と、コンパクションモジュール２４とを含む。コントローラ２２は、内部バスを介して接続されたブロック管理モジュール２３及びコンパクションモジュール２４などの各モジュールの動作を制御する。ブロック管理モジュール２３は、各ブロックの有効クラスタを管理するテーブルや、フリーブロック（未使用の待機状態ブロック）などを管理する管理情報を有し、フラッシュメモリ１１の各ブロックを管理する。
【００１７】
（コンパクションモジュール）
コンパクションモジュール２４は、図２に示すように、ブロック検索モジュール３０と、有効クラスタ数閾値算出モジュール（以下、閾値算出モジュールと略する場合がある）３１と、コンパクションブロックリスト管理モジュール（以下、ブロックリスト管理モジュールと略する場合がある）３２と、クラスタ検索モジュール３３と、コマンドリスト生成モジュール３４と、コマンドリスト投入モジュール３５とを有する。
【００１８】
ブロック検索モジュール３０は、有効データが記録されているアクティブブロック群から、コンパクション対象ブロックの候補を検索する。閾値算出モジュール３１は、ブロック検索モジュール３０が実行するブロック検索処理での条件として利用する有効クラスタ数の閾値（有効クラスタ数閾値と呼ぶ）を算出する。ブロックリスト管理モジュール３２は、コンパクション対象ブロックの候補およびコンパクション処理中のブロックを、それぞれリスト構造により管理する。
【００１９】
クラスタ検索モジュール３３は、ブロックリスト管理モジュール３２により管理されているリスト内で、コンパクション処理中の各ブロックについてリード可能な最小単位であるクラスタ単位での有効データまたは無効データのいずれであるかを判定する。クラスタ検索モジュール３３は、クラスタ単位での有効データである有効クラスタを検索する。
【００２０】
コマンドリスト生成モジュール３４は、クラスタ検索モジュール３３により検索された有効クラスタについて、コンパクション処理の要求コマンド（コンパクション要求コマンド）セットを生成する。コマンドリスト投入モジュール３５は、コマンドリスト生成モジュール３４から受け取ったコンパクション要求コマンドを、インタフェース２０に投入する。これにより、フラッシュメモリ１１に対するコンパクション処理が実行される。
【００２１】
［コンパクション処理］
以下、図３、及び図４から図６のフローチャートを参照して、本実施形態のコンパクション処理を説明する。
【００２２】
ＳＳＤは、後述するように、ブロック内の記憶領域を有効活用するためにコンパクション処理を実行する（図６を参照）。本実施形態のコンパクションモジュール２４では、図２に示すように、各モジュール３０〜３５が連携して、コンパクション処理を高速かつ効率的に実行する。
【００２３】
まず、ブロック検索モジュール３０は、図５のフローチャートに示すように、有効データが記録されているアクティブブロック群から、コンパクション対象ブロックの候補を検索する。この場合、コンパクション処理を効果的に行うためには、できるだけ有効クラスタ数の少ない低密度のブロックをコンパクション対象ブロックとして検索する必要がある。
【００２４】
ここで、クラスタ（cluster）は、フラッシュメモリ１１からデータを読み出す場合の最小アクセス単位である。１クラスタは、例えば１物理ページの半分に対応するデータ量である。マルチチャネル構成のＳＳＤの場合、チャネル数×プレーン（plane）数の物理ページから論理ページが構成される。従って、有効クラスタはクラスタ単位の有効データである。また、有効クラスタ数（ＣＮ）は、１ブロック内の有効データ量である。
【００２５】
ブロック検索モジュール３０は、後述するように、コンパクション対象ブロックの候補を検索する場合の条件として、有効クラスタ数（ＣＮ）に係る閾値（有効クラスタ数閾値ＴＨ）を使用する。有効クラスタ数閾値ＴＨは、閾値算出モジュール３１により算出される。以下、図４のフローチャートを参照して、閾値算出モジュール３１の処理を説明する。
【００２６】
閾値算出モジュール３１は、図３に示すように、有効クラスタ数閾値を管理する管理テーブル１００を有する。管理テーブル１００は、フラッシュメモリ１１の記憶容量の余裕率（Ｍ）と有効クラスタ密度（ＣＤ）とが対応付けられている。余裕率（Ｍ）は、装置表記容量に対して実際に使用可能な記憶容量の割合である。
【００２７】
閾値算出モジュール３１は、使用不可のブロック（ＢＢ：Bad Block）の発生したタイミングで、ブロック管理モジュール２３からその発生通知を受け付ける（ブロック４００）。閾値算出モジュール３１は、その発生通知を受け付けると、記憶容量の余裕率（Ｍ）を算出（再計算）する（ブロック４０１）。ここで、余裕率（Ｍ）は、数式「Ｍ＝ＭＣ÷ＴＣ×100（％）」により算出される。ＭＣは余裕容量であり、ユーザデータの記憶に利用可能な全記憶容量からＴＣを差し引いた容量である。ＴＣは、フラッシュメモリ１１の装置表記容量である。
【００２８】
さらに、閾値算出モジュール３１は、管理テーブル１００を参照して、算出した余裕率（Ｍ）に対応する有効クラスタ密度（ＣＤ）を算出する（ブロック４０２）。ここで、１クラスタは、例えば１ページ（物理ページ）の半分に対応するデータ量である。また、１論理ページは例えば３２物理ページから構成され、１ブロックは例えば６４論理ページ分のデータ量である。これらの関係から、余裕率（Ｍ）と有効クラスタ密度（ＣＤ）とが対応付けられた情報が、管理テーブル１００として予め作成されている。
【００２９】
次に、閾値算出モジュール３１は、管理テーブル１００から算出した有効クラスタ密度（ＣＤ）から有効クラスタ数閾値（ＴＨ）を算出する（ブロック４０３）。有効クラスタ数閾値（ＴＨ）は、数式「ＴＨ＝ＴＮ×ＣＤ」により算出される。ＴＮは、論理ブロックの総クラスタ数である。閾値算出モジュール３１は、算出した有効クラスタ数閾値（ＴＨ）を内部メモリに記憶する。
【００３０】
閾値算出モジュール３１は、内部メモリに記憶した前の有効クラスタ数閾値（ＴＨ）と、今回算出した現在値とを比較する（ブロック４０４）。閾値算出モジュール３１は、閾値が変化している場合には、内部メモリの既存値を有効クラスタ数閾値（ＴＨ）の現在値（最新値）に更新する（ブロック４０５）。
【００３１】
要するに、閾値算出モジュール３１は、フラッシュメモリ１１の余裕率の変動に応じて管理テーブル１００から対応する有効クラスタ密度（ＣＤ）を求めて、この有効クラスタ密度（ＣＤ）から最新の有効クラスタ数閾値（ＴＨ）を算出する。閾値算出モジュール３１は、内部メモリの既存値を最新の有効クラスタ数閾値（ＴＨ）に更新する。なお、閾値算出モジュール３１は、アクティブブロック群の平均有効クラスタ数を算出し、その平均値に基づいて最新の有効クラスタ数閾値（ＴＨ）を算出し、内部メモリに記憶してもよい。
【００３２】
次に、ブロック検索モジュール３０は、図５のフローチャートに示すように、閾値算出モジュール３１の内部メモリに格納されている最新の有効クラスタ数閾値（ＴＨ）を取得する（ブロック５００）。さらに、ブロック検索モジュール３０は、各アクティブブロック（有効データが記録されているブロック）から、有効クラスタ数（ＣＮ）を取得する（ブロック５０１）。この場合、ブロックモジュール３０は、ブロック管理モジュール２３から各アクティブブロック毎の有効クラスタ数（ＣＮ）を取得する。
【００３３】
ブロック検索モジュール３０は、取得した有効クラスタ数（ＣＮ）が０であるブロックを検索すると、当該ブロックをフリーブロック（未使用の待機状態ブロック）として解放するための通知をブロック管理モジュール２３に行なう（ブロック５０２のＹＥＳ，５０５）。コントローラ２１は、当該ブロックに対する消去処理を実行する。ブロック管理モジュール２３は、消去処理後のブロックをフリーブロックとして登録する。
【００３４】
一方、ブロック検索モジュール３０は、有効クラスタ数（ＣＮ）が０でないブロックの場合には、有効クラスタ数（ＣＮ）と有効クラスタ数閾値（ＴＨ）とを比較する（ブロック５０３）。ブロック検索モジュール３０は、有効クラスタ数（ＣＮ）が閾値（ＴＨ）より少ない場合には、当該有効クラスタ数（ＣＮ）のブロックをコンパクション対象ブロックとして候補リストに登録する（ブロック５０４）。
【００３５】
ブロック検索モジュール３０は、所定範囲のアクティブブロックに対する検索処理を繰り返し、閾値（ＴＨ）より少ない有効クラスタ数（ＣＮ）のブロックを候補リストに追加していく（ブロック５０６）。ここで、ブロック検索モジュール３０は、有効クラスタ数（ＣＮ）が閾値（ＴＨ）より少ないブロックの中で、有効クラスタ数（ＣＮ）の少ない順に所定数のブロックをコンパクション対象ブロックとして選定してもよい。
【００３６】
ブロックリスト管理モジュール３２は、コンパクション対象ブロックの候補およびコンパクション処理中のブロックを、それぞれリスト構造により管理する。具体的には、ブロックリスト管理モジュール３２は、ブロック検索モジュール３０により選出されたブロック群のブロックＩＤ（識別情報）をコンパクション対象ブロックの候補としてリスト構造で管理する。
【００３７】
なお、ブロックリスト管理モジュール３２は、コンパクション対象ブロックの候補リストとしては、目的に応じて例えば３種類のリストを有し、コンパクション対象ブロックを管理する。１種類目のリストは、通常のコンパクション処理用で、選出されたブロックのブロックＩＤを管理するためのものである。即ち、通常のコンパクション処理では、コントローラ２２は、ブロック管理モジュール２３により管理しているフリーブロック数を確認し、それが規定数以下であればフリーブロックの枯渇状態を回避するために、ブロック検索モジュール３０に対してコンパクション対象ブロックの検索処理を開始させる。
【００３８】
また、２種類目のリストは、エラー修復目的のコンパクション処理用である。例えば、コントローラ２２は、定期的にリード確認を行い、エラービットが規定値以上多くなったブロックの場合に、退避の目的で当該ブロック内のデータを他のブロックに移動する処理に使用する。このようなコンパクション処理は、パトロールリフレッシュ処理と呼ばれることがある。３種類目のリストは、フラッシュメモリ１１の延命のためのウェアレベリング（wear leveling）目的のコンパクション処理用である。フラッシュメモリ１１の寿命は、ブロックの消去回数および消去時間間隔に依存するため、ブロックの疲弊度を平準化する必要がある。このコンパクション処理は、図示しないウェアレベリングモジュールにより、ウェアレベリングが必要と判定された場合に開始される。
【００３９】
ブロックリスト管理モジュール３２は、コンパクション対象ブロックの候補リストから各目的に応じて優先順位をつけ、コンパクション処理中にコンパクション対象ブロックのリストを生成する。以下、図６のフローチャートを参照して、コンパクション処理を具体的に説明する。
【００４０】
クラスタ検索モジュール３３は、ブロックリスト管理モジュール３２により管理されているリスト内で、各コンパクション対象ブロックについてクラスタ単位での有効データまたは無効データのいずれであるかを判定し、有効データである有効クラスタを検索する（ブロック６００）。
【００４１】
コマンドリスト生成モジュール３４は、クラスタ検索モジュール３３により検索された有効クラスタについて、コンパクション処理の要求コマンド（コンパクション要求コマンド）セットを生成する（ブロック６０１）。コマンドリスト投入モジュール３５は、コマンドリスト生成モジュール３４から受け取ったコンパクション要求コマンドを、インターフェース２０に投入する（ブロック６０２，６０３）。これにより、フラッシュメモリ１１に対するコンパクション処理が実行される（ブロック６０４）。
【００４２】
ここで、コンパクション要求コマンドとは、コンパクション対象ブロックから有効クラスタをリードし、別のブロックに書き直すためのコマンドである。本実施形態では、コマンドリスト生成モジュール３４は、ライト可能な最小単位であるページ単位でまとめてコマンド発行を行うものとする。マルチチャネル構成のＳＳＤの場合、例えば、「チャネル数−Parity用チャネル−移動先ブロックのNULLブロック数）×プレーン（plane）数×ページ当たりのクラスタ数」のクラスタ数個分のコマンドを１セットとして生成する。
【００４３】
コンパクション処理が完了すると、コントローラ２１は、コンパクション対象ブロックに対する消去処理を実行する。ブロック管理モジュール２３は、消去処理後のブロックをフリーブロックとして登録するためのリストを生成する（ブロック６０６）。
【００４４】
以上のように本実施形態によれば、コンパクション処理の実行時にコンパクション対象ブロックを検索する場合に、有効クラスタの少ない低密度ブロックを有効クラスタ数閾値に基づいて判定する。この有効クラスタ数閾値は、フラッシュメモリ１１のメモリ容量の余裕率の変動に応じて最新の閾値として更新される。
【００４５】
このような本実施形態の検索方法であれば、コンパクション対象ブロックを高速かつ効率的に検索することが可能となり、結果としてコンパクション処理時間の短縮化を実現することができる。即ち、コンパクション対象ブロックを検索する場合に、できるだけ低密度のブロック検索を実現するためには、有効クラスタ数閾値が小さいことが望ましい。しかし一方で、フラッシュメモリ１１の余裕率が減少すると、コンパクション対象ブロックの候補を検索することが困難となる。また逆に、余裕をもたせて有効クラスタ数閾値を予め大きめの値に設定した場合には、コンパクション処理の効率が低下する。
【００４６】
従って、本実施形態であれば、有効クラスタ数閾値を余裕率の変動に応じて更新することにより、コンパクション対象ブロックを高速かつ効率的に検索することが可能となる。また、コンパクション対象ブロックの検索処理に要する専用メモリ領域として、閾値算出モジュール３１が有する有効クラスタ数閾値テーブル及び閾値を記憶するメモリ領域だけである。このため、専用メモリ領域を最小限にすることが可能である。要するに、本実施形態であれば、最小限の専用メモリ領域で、フラッシュメモリの使用状態（余裕率）に適した効果的なコンパクション対象ブロックの検索処理を実現できる。
【００４７】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００４８】
１…ホストシステム、１０…ＳＳＤコントローラ、１１…NAND型フラッシュメモリ、
１２…フラッシュメモリコントローラ、
１３…ホストインターフェース（ホストＩ／Ｆ）、
１４…バッファ管理モジュール、１５…バッファメモリ（ＤＲＡＭ）、
１６…マイクロプロセッサ（ＣＰＵ）、２０…入出力インターフェース、
２１…メモリアクセスコントローラ、２２…コントローラ、
２３…ブロック管理モジュール、２４…コンパクションモジュール、
３０…ブロック検索モジュール、３１…有効クラスタ数閾値算出モジュール、
３２…コンパクションブロックリスト管理モジュール、
３３…クラスタ検索モジュール、３４…コマンドリスト生成モジュール、
３５…コマンドリスト投入モジュール。
【図１】
0005579135.tif 000002
【図２】
0005579135.tif 000003
【図３】
0005579135.tif 000004
【図４】
0005579135.tif 000005
【図５】
0005579135.tif 000006
【図６】
0005579135.tif 000007