(57)【要約】【課題】  訂正不能なリードエラーが生じてもＧＣ元論理ブロックを確保でき、ガベージコレクションを実行することができる記憶装置及び記憶制御方法を提供すること。【解決手段】  実施形態によれば、記憶装置は、不揮発性メモリと、外部装置により指定される論理アドレスと不揮発性メモリの物理アドレスとの関係を記憶する第１テーブルと、論理ブロックと複数の物理ブロックとの関係を記憶する第２テーブルと、ガベージコレクションにより第１テーブルを更新するコントローラと、を具備する。コントローラは、ＧＣ元論理ブロックのクラスタからリードしたデータが訂正不能な場合、新論理ブロックを作成し、ＧＣ元論理ブロックに割り当てられていた複数の物理ブロックの全てのデータを消去し、データが消去された複数の物理ブロックを新論理ブロックに割り当て、ＧＣ元論理ブロックに実質的に物理ブロックが割り当てられないように第２テーブルを更新する。【選択図】  図４
2020017134.tif 000002
【特許請求の範囲】
【請求項１】
複数の物理ブロックを有し、各物理ブロックは複数のクラスタを有し、物理ブロック単位でデータが消去され、クラスタ単位でデータがリード又はライトされる不揮発性メモリと、
外部装置により指定される論理アドレスと、前記論理アドレスに対応する前記不揮発性メモリの物理アドレスとの関係を記憶する第１テーブルと、
前記不揮発性メモリの複数の物理ブロックが割り当てられる論理ブロックと、前記複数の物理ブロックとの関係を記憶する第２テーブルと、
ガベージコレクション元論理ブロックの全ての有効クラスタからリードしたデータをガベージコレクション先論理ブロックに移動し、前記ガベージコレクション元論理ブロックの全てのデータを消去し、前記第１テーブルを更新するコントローラと、を具備し、
前記コントローラは、前記ガベージコレクション元論理ブロックのクラスタからリードしたデータが訂正不能な場合、新論理ブロックを作成し、前記ガベージコレクション元論理ブロックに割り当てられていた複数の物理ブロックの全てのデータを消去し、データが消去された前記複数の物理ブロックを前記新論理ブロックに割り当て、前記ガベージコレクション元論理ブロックに実質的に物理ブロックが割り当てられないように前記第２テーブルを更新する記憶装置。
【請求項２】
前記コントローラは、前記ガベージコレクション元論理ブロックに存在し得ない物理ブロックを割り当てることにより、前記ガベージコレクション元論理ブロックに実質的に物理ブロックが割り当てられないように前記第２テーブルを更新する請求項１記載の記憶装置。
【請求項３】
前記論理ブロックには複数の疑似物理クラスタが割り当てられ、
前記複数の疑似物理クラスタの中の１つの疑似物理クラスタはユーザデータと論理クラスタアドレスを格納し、
前記論理クラスタアドレスは前記１つの疑似物理クラスタに対応する論理アドレスを示し、
前記第１テーブルは、前記論理クラスタアドレスに対応する疑似物理クラスタアドレスを格納し、
前記疑似物理クラスタアドレスは、前記１つの疑似物理クラスタが含まれる前記複数の論理ブロックを特定する情報と、特定された前記論理ブロック内の前記１つの疑似物理クラスタの相対位置を示す情報を含む請求項１記載の記憶装置。
【請求項４】
前記コントローラは、前記ガベージコレクション元論理ブロックの有効疑似物理クラスタからリードしたデータを前記ガベージコレクション先論理ブロックの疑似物理クラスタに移動し、前記第１テーブルの前記有効疑似物理クラスタに対応する論理アドレスに対応する前記疑似物理クラスタアドレスを前記ガベージコレクション先論理ブロックの前記疑似物理クラスタのアドレスに変更する請求項３記載の記憶装置。
【請求項５】
前記第１テーブル内の第１疑似物理クラスタアドレスにより指定される第１疑似物理クラスタが格納する第１論理クラスタアドレスに対応する第２疑似物理クラスタアドレスが前記第１疑似物理クラスタアドレスと等しい場合、前記第１疑似物理クラスタは有効疑似物理クラスタであり、
第２疑似物理クラスタアドレスが前記第１疑似物理クラスタアドレスと等しくない場合、前記第１疑似物理クラスタは無効疑似物理クラスタである請求項３記載の記憶装置。
【請求項６】
前記コントローラは、前記第２テーブルを更新後、前記外部装置から、リードしたデータが訂正不能な前記ガベージコレクション元論理ブロックの前記クラスタに関するリードコマンドを受けると、リードエラーを示す情報を前記外部装置へ返信する請求項１記載の記憶装置。
【請求項７】
複数の物理ブロックを有し、各物理ブロックは複数のクラスタを有し、物理ブロック単位でデータが消去され、クラスタ単位でデータがリード又はライトされる不揮発性メモリと、
外部装置により指定される論理アドレスと、前記論理アドレスに対応する前記不揮発性メモリの物理アドレスとの関係を記憶する第１テーブルと、
前記不揮発性メモリの複数の物理ブロックが割り当てられる論理ブロックと、前記複数の物理ブロックとの関係を記憶する第２テーブルと、
ガベージコレクション元論理ブロックの全ての有効クラスタからリードしたデータをガベージコレクション先論理ブロックに移動し、前記ガベージコレクション元論理ブロックの全てのデータを消去し、前記第１テーブルを更新するコントローラと、を具備する記憶装置の記憶制御方法であって、
前記ガベージコレクション元論理ブロックのクラスタからリードしたデータが訂正不能な場合、前記コントローラにより、新論理ブロックを作成し、前記ガベージコレクション元論理ブロックに割り当てられていた複数の物理ブロックの全てのデータを消去し、データが消去された前記複数の物理ブロックを前記新論理ブロックに割り当て、前記ガベージコレクション元論理ブロックに実質的に物理ブロックが割り当てられないように前記第２テーブルを更新する記憶制御方法。
【請求項８】
前記コントローラにより、前記ガベージコレクション元論理ブロックに存在し得ない物理ブロックを割り当てることにより、前記ガベージコレクション元論理ブロックに実質的に物理ブロックが割り当てられないように前記第２テーブルを更新する請求項７記載の記憶制御方法。
【請求項９】
前記論理ブロックには複数の疑似物理クラスタが割り当てられ、
前記複数の疑似物理クラスタの中の１つの疑似物理クラスタはユーザデータと論理クラスタアドレスを格納し、
前記論理クラスタアドレスは前記１つの疑似物理クラスタに対応する論理アドレスを示し、
前記第１テーブルは、前記論理クラスタアドレスに対応する疑似物理クラスタアドレスを格納し、
前記疑似物理クラスタアドレスは、前記１つの疑似物理クラスタが含まれる前記複数の論理ブロックを特定する情報と、特定された前記論理ブロック内の前記１つの疑似物理クラスタの相対位置を示す情報を含む請求項７記載の記憶制御方法。
【請求項１０】
前記コントローラにより、前記ガベージコレクション元論理ブロックの有効疑似物理クラスタからリードしたデータを前記ガベージコレクション先論理ブロックの疑似物理クラスタに移動し、前記第１テーブルの前記有効疑似物理クラスタに対応する論理アドレスに対応する前記疑似物理クラスタアドレスを前記ガベージコレクション先論理ブロックの前記疑似物理クラスタのアドレスに変更する請求項９記載の記憶制御方法。
【請求項１１】
前記第１テーブル内の第１疑似物理クラスタアドレスにより指定される第１疑似物理クラスタが格納する第１論理クラスタアドレスに対応する第２疑似物理クラスタアドレスが前記第１疑似物理クラスタアドレスと等しい場合、前記第１疑似物理クラスタは有効疑似物理クラスタであり、
第２疑似物理クラスタアドレスが前記第１疑似物理クラスタアドレスと等しくない場合、前記第１疑似物理クラスタは無効疑似物理クラスタである請求項９記載の記憶制御方法。
【請求項１２】
前記コントローラにより、前記第２テーブルを更新後、前記外部装置から、リードしたデータが訂正不能な前記ガベージコレクション元論理ブロックの前記クラスタに関するリードコマンドを受けると、リードエラーを示す情報を前記外部装置へ返信する請求項７記載の記憶制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は記憶装置及び記憶制御方法に関する。
【背景技術】
【０００２】
フラッシュメモリ等の不揮発性半導体メモリを備え、ハードディスクドライブ（ＨＤＤ）と同様のインタフェースを持つソリッドステートドライブ（ＳＳＤ）と呼ばれる記憶装置では、データ消去の単位とデータリード／ライトの単位とが異なる。一例として、データ消去の単位は物理ブロックであり、データリード／ライトの単位はそれより小さいクラスタである。１物理ブロックは多数のワード線を含み、１ワード線は多数のページを含み、１ページは複数のクラスタを含む。
【０００３】
ＳＳＤでは、データの書き換えが進むと、物理ブロック内で有効クラスタと無効クラスタが混在する可能性が高くなる。有効クラスタは、その物理アドレスが、論理アドレス／物理アドレス変換テーブルにより指定されているクラスタであり、無効クラスタは、その物理アドレスが論理アドレス／物理アドレス変換テーブルにより指定されていないクラスタである。このような物理ブロックが増えると、記憶領域が有効に活用できない。
【０００４】
記憶領域を有効に活用するために、コンパクション又はガベージコレクション（以下、ガベージコレクション又はＧＣと称する）と呼ばれる処理が行われる。ガベージコレクションでは、データが消去されているフリーブロックの個数を増やすため、有効クラスタと無効クラスタが混在する物理ブロックを含む論理ブロック（ＧＣ元論理ブロックと称する）内の全ての有効クラスタのデータが消去済み論理ブロック（ＧＣ先論理ブロックと称する）に移動される。全ての有効クラスタのデータがＧＣ先論理ブロックに移動されたＧＣ元論理ブロックの全てのデータは消去される。消去済みのＧＣ元論理ブロックはフリーブロックとして解放され、ＧＣ先論理ブロックとして再利用することが可能となる。
【０００５】
ＧＣ元論理ブロック内のクラスタのデータをリードする際、リードデータにエラーが生じ、かつそのエラーが訂正不能な場合がある。この場合、データがリードされたクラスタは有効クラスタであるか無効クラスタであるか判断できない。そのため、あるクラスタのデータにリードエラーが生じ、かつそのエラーが訂正不能な場合、ガベージコレクションを実行できず、ＧＣ元論理ブロックのデータを消去することができず、ＧＣ元論理ブロックをＧＣ先論理ブロックとして再利用することができない。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開2013-200722号公報
【特許文献２】特開2013-174975号公報
【特許文献３】米国特許第8825946号明細書
【特許文献４】特許第6313242号公報
【特許文献５】米国特許出願公開第2013/0124842号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００７】
従来の記憶装置では、ＧＣ元論理ブロックのクラスタのデータをリードする際、リードエラーが生じ、かつそのエラーが訂正不能な場合、ＧＣ先論理ブロックが枯渇し、ガベージコレクションを実行できなくなる恐れがある。
本発明の目的は、訂正不能なリードエラーが生じてもＧＣ元論理ブロックを確保することができ、ガベージコレクションを実行することができる記憶装置及び記憶制御方法を提供することである。
【課題を解決するための手段】
【０００８】
実施形態によれば、記憶装置は、
複数の物理ブロックを有し、各物理ブロックは複数のクラスタを有し、物理ブロック単位でデータが消去され、クラスタ単位でデータがリード又はライトされる不揮発性メモリと、
外部装置により指定される論理アドレスと、前記論理アドレスに対応する前記不揮発性メモリの物理アドレスとの関係を記憶する第１テーブルと、
前記不揮発性メモリの複数の物理ブロックが割り当てられる論理ブロックと、前記複数の物理ブロックとの関係を記憶する第２テーブルと、
ガベージコレクション元論理ブロックの全ての有効クラスタからリードしたデータをガベージコレクション先論理ブロックに移動し、前記ガベージコレクション元論理ブロックの全てのデータを消去し、前記第１テーブルを更新するコントローラと、を具備する。
【０００９】
前記コントローラは、前記ガベージコレクション元論理ブロックのクラスタからリードしたデータが訂正不能な場合、新論理ブロックを作成し、前記ガベージコレクション元論理ブロックに割り当てられていた複数の物理ブロックの全てのデータを消去し、データが消去された前記複数の物理ブロックを前記新論理ブロックに割り当て、前記ガベージコレクション元論理ブロックに実質的に物理ブロックが割り当てられないように前記第２テーブルを更新する。
【図面の簡単な説明】
【００１０】
【図１】実施形態による記憶装置の一例の構成を示すブロック図である。
【図２】物理ブロック、論理ブロック及び疑似物理クラスタの関係を説明する図である。
【図３】ＬＵＴ５６の一例を示す図である。
【図４】ガベージコレクション処理の一例を示すフローチャートである。
【図５】論理ブロックテーブル５８の状態変化の一例を示す図である。
【図６】ガベージコレクションの一例を説明する図である。
【図７】ガベージコレクションの一例を説明する図である。
【図８】ＧＣ先論理ブロックが枯渇する場合のガベージコレクションの一例を説明する図である。
【図９】ＧＣ先論理ブロックが枯渇する場合のガベージコレクションの一例を説明する図である。
【図１０】ＧＣ先論理ブロックの枯渇を回避するガベージコレクションの一例を説明する図である。
【図１１】ＧＣ先論理ブロックの枯渇を回避するガベージコレクションの一例を説明する図である。
【図１２】ＧＣ先論理ブロックの枯渇を回避するガベージコレクションの他の例を説明する図である。
【図１３】ＧＣ先論理ブロックの枯渇を回避するガベージコレクションの他の例を説明する図である。
【発明を実施するための形態】
【００１１】
以下、実施の形態について図面を参照して説明する。なお、開示はあくまで一例にすぎず、以下の実施形態に記載した内容により発明が限定されるものではない。当業者が容易に想到し得る変形は、当然に開示の範囲に含まれる。説明をより明確にするため、図面において、各部分のサイズ、形状等を実際の実施態様に対して変更して模式的に表す場合もある。複数の図面において、対応する要素には同じ参照数字を付して、詳細な説明を省略する場合もある。
【００１２】
図１は実施形態に係るＳＳＤ２０の一例の構成を示すブロック図である。ＳＳＤ２０は、不揮発性半導体メモリにデータをライトするとともに、不揮発性半導体メモリからデータをリードするように構成された半導体ストレージデバイスである。ＳＳＤ２０は、ホスト１０に接続される。ホスト１０は、ＳＳＤ２０にアクセスし、ＳＳＤ２０にデータをライトするとともに、ＳＳＤ２０からデータをリードする。ホスト１０は、大量且つ多様なデータをＳＳＤ２０に保存するサーバ（ストレージサーバとも称する）であっても良いし、パーソナルコンピュータであっても良い。ＳＳＤ２０は、ホスト１０のメインストレージとして使用され得る。ＳＳＤ２０は、ホスト１０に内蔵されても良いし、ホスト１０にケーブルまたはネットワークを介して接続されても良い。
【００１３】
ＳＳＤ２０は、コントローラ２２、ＮＡＮＤ型フラッシュメモリ（以下、フラッシュメモリと称する）２４、ＲＡＭ２６を備える。コントローラ２２は、ホストインタフェース（Ｉ／Ｆ）３２、ＣＰＵ３４、ＮＡＮＤインタフェース（Ｉ／Ｆ）３６、ＲＡＭインタフェース（Ｉ／Ｆ）３８を備える。ＣＰＵ３４、ホストＩ／Ｆ３２、ＮＡＮＤ  Ｉ／Ｆ３６、ＲＡＭ  Ｉ／Ｆ３８はバスライン４０に接続され得る。コントローラ２２は、ソフトウェアに従って動作するＣＰＵから構成しても良いし、Ｓｙｓｔｅｍ−ｏｎ−ｃｈｉｐ（ＳｏＣ）、ＡＳＩＣ、ＦＰＧＡ等のような回路によって構成しても良い。
【００１４】
ホスト１０とＳＳＤ２０とを電気的に相互接続するためのホストＩ／Ｆ３２としては、例えばSmall Computer System Interface（ＳＣＳＩ）（登録商標）、PCI Express（登録商標）（ＰＣＩｅ（登録商標）とも称する）、Serial Attached SCSI（ＳＡＳ）（登録商標）、Serial Advanced Technology Attachment（ＳＡＴＡ）（登録商標）、Non Volatile Memory Express（ＮＶＭｅ（登録商標））、Universal Serial Bus（ＵＳＢ）（登録商標）等の規格が使用され得るが、これらに限定されない。ホストＩ／Ｆ３２は、ホスト１０から様々なコマンド、例えばＩ／Ｏコマンド、各種制御コマンド等を受信する回路として機能する。Ｉ／Ｏコマンドには、ライトコマンド、リードコマンド等が含まれ得る。
【００１５】
不揮発性半導体メモリとしてのフラッシュメモリ２４は、例えばＮＡＮＤ型のフラッシュメモリからなるが、ＮＡＮＤ型のフラッシュメモリに限らず、他の不揮発性半導体メモリ、例えば、ＮＯＲ型フラッシュメモリ、ＭＲＡＭ（Magnetoresistive Random Access Memory）、ＰＲＡＭ（Phasechange Random Access Memory）、ＲｅＲＡＭ（Resistive Random Access Memory）又はＦｅＲＡＭ（Ferroelectric Random Access Memory）等から構成されても良い。フラッシュメモリ２４は、複数のフラッシュメモリチップ（すなわち、複数のフラッシュメモリダイ）を含んでいても良い。各フラッシュメモリチップは、マトリクス状に配置された複数のメモリセルを含むメモリセルアレイを含む。フラッシュメモリ２４は、二次元構造のＮＡＮＤ型フラッシュメモリであっても良いし、三次元構造のＮＡＮＤ型フラッシュメモリであっても良い。
【００１６】
各チップは、複数の不揮発性のメモリセルを含む複数の物理ブロックを備える。フラッシュメモリ２４では、物理ブロック単位でデータが一括して消去される。すなわち、物理ブロックは、データ消去単位の領域である。データリード／データライトは、クラスタ単位で行われる。クラスタに対応する論理アドレス空間上の概念として論理アドレス（ＬＢＡ）範囲がある。１クラスタは１つの論理アドレス範囲に関連づけられたデータ、又は１つの論理アドレス範囲の一部分に関連づけられたデータを含む。フラッシュメモリ２４のリード、ライトはコントローラ２２により制御される。フラッシュメモリ２４はＮＡＮＤ  Ｉ／Ｆ３６に接続される。
【００１７】
１ビット又は複数ビットのデータがメモリセルに格納可能である。メモリセル当たりに複数ビットを格納可能に構成されたフラッシュメモリの例には、メモリセル当たりに２ビットのデータを格納可能なマルチレベルセル（Multi-Level Cell(ＭＬＣ)、あるいはFour-Level Cell(４ＬＣと称する)）フラッシュメモリ、メモリセル当たりに３ビットのデータを格納可能なトリプルレベルセル（Triple-Level Cell(ＴＬＣと称する)、あるいはEight-Level Cell(８ＬＣと称する)）フラッシュメモリ、メモリセル当たりに４ビットのデータを格納可能なクワッドレベルセル（Quad-Level Cell(ＱＬＣと称する)、あるいはSixteen-Level Cell(１６ＬＣと称する)）フラッシュメモリ、等が含まれる。メモリセル当たりに１ビットを格納するように構成されたフラッシュメモリは、シングルレベルセル（Single-Level Cell(ＳＬＣ又は２ＬＣと称する)）フラッシュメモリと称される。
【００１８】
ＲＡＭ２６は、揮発性メモリであるＤＲＡＭ又はＳＲＡＭ等からなり、コントローラ２２の外部に設けるのではなく、コントローラ２２に内蔵されていても良い。ＲＡＭ２６には、フラッシュメモリ２４にライトされるデータを一時的に格納するためのバッファ領域であるライトバッファ５２と、フラッシュメモリ２４からリードしたデータを一時的に格納するためのバッファ領域であるリードバッファ５４と、アドレス変換テーブル（論理アドレス／物理アドレス変換テーブルとも称する）として機能するルックアップテーブル（ＬＵＴと称する）５６と、論理ブロックと物理ブロックとの割り当て関係を示す論理ブロックテーブル５８を備える。ＬＵＴ５６は、論理クラスタアドレスと疑似物理クラスタアドレスの間のマッピングを管理する。ＲＡＭ２６はＲＡＭ  Ｉ／Ｆ３８に接続される。
【００１９】
コントローラ２２は、フラッシュメモリ２４のデータ管理およびブロック管理を実行するように構成されたフラッシュトランスレーション層（ＦＴＬ）として機能しても良い。このＦＴＬによって実行されるデータ管理には、（１）ＳＳＤ２０の論理アドレス（論理クラスタアドレス）とフラッシュメモリ２４の物理アドレス（疑似物理クラスタアドレス）との間の対応関係を示すマッピング情報の管理、（２）クラスタ単位のリード／ライトとブロック単位の消去動作とを隠蔽するための処理、等が含まれる。論理アドレスは、ＳＳＤ２０をアドレス指定するためにホスト１０によって指定されるアドレスである。
【００２０】
論理アドレスと物理アドレスとの間のマッピングの管理は、ＬＵＴ５６を用いて実行される。コントローラ２２は、ＬＵＴ５６を使用して、論理アドレスと物理アドレスとの間のマッピングをクラスタサイズ単位で管理する。ある論理アドレスに対応する物理アドレスは、この論理アドレスで指定されるデータがライトされたフラッシュメモリ２４内の物理記憶位置を示す。ＬＵＴ５６は、ＳＳＤ２０の電源オン時にフラッシュメモリ２４からＲＡＭ２６にロードされても良い。
【００２１】
ＣＰＵ３４は、リード制御部４２、ライト制御部４４、ガベージコレクション（ＧＣと称する）制御部４６等として機能することができる。なお、リード制御部４２、ライト制御部４４、ＧＣ制御部４６の一部または全部も、コントローラ２２内の専用ハードウェアによって実現しても良い。ライト制御部４４は、ライトデータを誤り訂正符号化し、符号化データをフラッシュメモリ２４にライトする。リード制御部４２は、フラッシュメモリ２４からリードしたデータに誤り訂正復号し、リードデータの誤りを訂正する。誤り訂正符号化及び誤り訂正復号はコントローラ２２内の専用ハードウェアによって実現しても良い。ＧＣ制御部４６は適宜なタイミングでガベージコレクションを実行する。
【００２２】
ライト制御部４４は、ある論理アドレスに対応する更新データを、この論理アドレスに対応する物理アドレスで指定されるクラスタではなく、別のクラスタにライトする。そして、ライト制御部４４は、ＬＵＴ５６を更新して、この論理アドレスをこの別のクラスタを指定する物理アドレスに関連付ける。これにより、以前のデータはリードされることがなく、以前のデータを格納しているクラスタは無効化される。
【００２３】
ブロック管理には、バッドブロックの管理、ウェアレベリング、ガベージコレクション、等が含まれる。
ＣＰＵ３４は、ホストＩ／Ｆ３２、ＮＡＮＤ  Ｉ／Ｆ３６、ＲＡＭ  Ｉ／Ｆ３８を制御するように構成されたプロセッサである。ＣＰＵ３４は、図示しないＲＯＭ等に格納されている制御プログラム（ファームウェア）を実行することによって様々な処理を行う。このＣＰＵ３４は、上述のＦＴＬ処理に加え、ホスト１０からの様々なコマンドを処理するためのコマンド処理等を実行することができる。ＣＰＵ３４の動作は、ＣＰＵ３４によって実行される上述のファームウェアによって制御される。なお、ＦＴＬ処理およびコマンド処理の一部または全部は、コントローラ２２内の専用ハードウェアによって実行しても良い。
【００２４】
図２は、物理ブロック、論理ブロック及び疑似物理クラスタの関係を説明する図である。上述したように、ＮＡＮＤチップは複数の物理ブロックを含み、複数の物理ブロックが１つの論理ブロックに割り当てられる。１論理ブロックに割り当てられる複数の物理ブロックは単一のチップに含まれる複数の物理ブロックでも良いし、異なるチップに含まれる複数の物理ブロックでも良い。１論理ブロックに割り当てられる物理ブロックの数は、論理ブロックに関わらず一定でも良いし、論理ブロックによって異なっても良い。１つの論理ブロックには複数の疑似物理クラスタが割り当てられる。１疑似物理クラスタに格納される情報はユーザデータ（例えば、４ＫｉＢ）と冗長部（例えば、１２バイト）からなる。冗長部は論理クラスタアドレスとその他の情報を含む。
【００２５】
疑似物理クラスタアドレスは、疑似物理クラスタがどの論理ブロックに含まれるかを示す情報と、疑似物理クラスタが論理ブロック内の先頭の疑似物理クラスタから何番目の疑似物理クラスタであるか、すなわち疑似物理クラスタの論理ブロック内の相対的な位置を示す情報とからなる。ホスト１０は疑似物理アドレスにアクセスする際、論理クラスタアドレスを指定する。論理アドレスに対応する物理アドレス、即ち論理クラスタアドレスと疑似物理クラスタアドレスとのマッピングを示す情報がＬＵＴ５６に格納される。
【００２６】
図３は、ＬＵＴ５６の一例を示す。ＬＵＴ５６は疑似物理クラスタアドレスを記憶し、疑似物理クラスタアドレスのインデックスが論理クラスタアドレスに対応する。論理クラスタアドレスはインデックス×クラスタサイズ（４ＫｉＢ）で表される。なお、４ＫｉＢは論理クラスタサイズであり、物理クラスタサイズは４ＫｉＢ＋１２Bytesである。ホスト１０から与えられた論理クラスタアドレスをクラスタサイズで除することにより、インデックスが求められると、論理クラスタアドレスに対応する疑似物理クラスタアドレスが求められる。
【００２７】
例えば、インデックス３の疑似物理クラスタアドレスＰＣ３で指定される疑似物理クラスタＡに格納されている情報の中の冗長部の中の論理クラスタアドレスがインデックス３に対応する場合、疑似物理クラスタＡは有効クラスタである。同様に、インデックスｍの疑似物理クラスタアドレスＰＣｍで特定される疑似物理クラスタＢに格納されている情報の中の冗長部の中の論理クラスタアドレスがインデックスｍに対応する場合、疑似物理クラスタＢは有効クラスタである。一方、ＬＵＴ５６から指定されていない疑似物理クラスタＣは無効クラスタである。
【００２８】
このように、ＬＵＴ５６の疑似物理クラスタアドレスを全て調べれば、疑似物理クラスタが有効クラスタであるか無効クラスタであるかを判断することができるが、以下のようにしても、疑似物理クラスタが有効クラスタであるか無効クラスタであるかを判断することができる。例えば、疑似物理クラスタＤの疑似物理クラスタアドレスがＰＣｄであり、疑似物理クラスタＤの冗長部の論理クラスタアドレスがＬＣｄであり、ＬＵＴ５６内で論理クラスタアドレスＬＣｄに対応する疑似物理クラスタアドレスがＰＣｅであるとする。疑似物理クラスタアドレスＰＣｄ、ＰＣｅが等しい場合、疑似物理クラスタＤは有効クラスタであり、疑似物理クラスタアドレスＰＣｄ、ＰＣｅが等しくない場合、疑似物理クラスタＤは無効クラスタであると判断できる。すなわち、ＬＵＴ５６のある疑似物理クラスタアドレスで指定される疑似物理クラスタが格納する情報内の論理クラスタアドレスに対応する疑似物理クラスタアドレスが上記ある疑似物理クラスタと一致する場合、当該疑似物理クラスタは有効クラスタであり、一致しない場合、当該疑似物理クラスタは無効クラスタである。
【００２９】
例えば、ホスト１０からある論理クラスタアドレスＬＣ１にデータＤＡ１をライトするコマンドが送信されると、ライト制御部４４はいずれかの疑似物理クラスタ（このクラスタの疑似物理クラスタアドレスをＰＣ１とする）にデータＤＡ１をライトする。ライト制御部４４は論理クラスタアドレスＬＣ１と疑似物理クラスタアドレスＰＣ１とのマッピングをＬＵＴ５６に設定する。この後、ホスト１０から論理クラスタアドレスＬＣ１に対してデータＤＡ２を上書きするライトコマンドが送信されると、ライト制御部４４は先の疑似物理クラスタとは別のいずれかの疑似物理クラスタ（このクラスタの疑似物理クラスタアドレスＰＣ２とする）にデータＤＡ２をライトする。ライト制御部４４は論理クラスタアドレスＬＣ１と疑似物理クラスタアドレスＰＣ２とのマッピングをＬＵＴ５６に設定する。これにより、疑似物理クラスタアドレスＰＣ１はＬＵＴ５６から指定されなくなり、データＤＡ１がライトされた疑似物理クラスタ（疑似物理クラスタアドレスはＰＣ１）が無効クラスタとなり、データＤＡ１が無効データとなる。このようにデータの上書きにより無効クラスタが生じ、有効クラスタと無効クラスタとが混在する物理ブロックが増えると、記憶領域を有効に活用するために、このような物理ブロックを含む論理ブロックに対してガベージコレクション処理が行われる。
【００３０】
図４は、ガベージコレクション処理の一例を示すフローチャートである。
コントローラ２２（リード制御部４２、ライト制御部４４、ＧＣ制御部４６を含む）は、ブロック１０２で、ガベージコレクションの開始タイミングになったか否かを判定する。コントローラ２２は、ホスト１０からガベージコレクション命令を受信したか否かに基づいてガベージコレクションの開始タイミングになったか否かを判定することができる。また、コントローラ２２はブロックの状態を管理しているので、コントローラ２２は、有効クラスタと無効クラスタが混在する物理ブロックが増えたことを検出することによっても、ガベージコレクションの開始タイミングになったか否かを判定できる。コントローラ２２は、ガベージコレクションの開始タイミングになったことを判定するまで、ブロック１０２の判定を繰り返す。
【００３１】
コントローラ２２は、ブロック１０２でガベージコレクションの開始タイミングになったことを判定すると、ブロック１０４で、有効クラスタと無効クラスタが混在する物理ブロックを含むガベージコレクションの対象候補の論理ブロックの中の１つ（ＧＣ元論理ブロックと称する）の１疑似物理クラスタからデータをリードする。リードデータはリードバッファ５４に格納される。
【００３２】
コントローラ２２は、ブロック１０６で、ブロック１０４でリードしたデータは訂正不能なリードエラーを含むか否かを判定する。リードしたデータがリードエラーを含む場合、コントローラ２２は、リードエラーを訂正する。しかし、エラーの種類や程度によっては、コントローラ２２が訂正できないエラーもある。リードエラーを生じ、しかもそのエラーが訂正不能なデータを格納するクラスタは、有効クラスタであるか無効クラスタであるかの判定ができないので、当該疑似物理クラスタのデータはＧＣ先論理ブロックに移動できない。
【００３３】
コントローラ２２は、リードしたデータは訂正不能なリードエラーを含むとブロック１０６で判定した場合、ブロック１０８で、当該疑似物理クラスタを論理不明クラスタとして管理する。
コントローラ２２は、リードしたデータは訂正不能なリードエラーを含まないとブロック１０６で判定した場合、ブロック１１０で、疑似物理クラスタは有効クラスタであるか否か判定する。この判定は、上述したように、疑似物理クラスタの冗長部の論理クラスタアドレスがＬＵＴ５６の何処を指しているかに基づいて行われる。
【００３４】
コントローラ２２は、ブロック１１０で疑似物理クラスタは有効クラスタであると判定すると、ブロック１１２で、リードバッファ５４に格納されている有効クラスタからリードしたデータをＧＣ先論理ブロックの疑似物理クラスタにライトする。ＧＣ先論理ブロックは全データが消去されている論理ブロック（フリーブロックとも称する）の中から選ばれる。ブロック１１２でデータのＧＣ先論理ブロックへのライトが完了すると、ＬＵＴ５６内のＧＣ元論理ブロック内の疑似物理クラスタアドレスがＧＣ先論理ブロック内の疑似物理クラスタアドレスに変更され、ＬＵＴ５６が更新される。
【００３５】
コントローラ２２は、ブロック１０８又はブロック１１２の処理を実行後、又はブロック１１０で疑似物理クラスタは無効クラスタであると判定すると、ブロック１１４で、ＧＣ元論理ブロックの中の全ての疑似物理クラスタからデータをリードしたか否かを判定する。コントローラ２２は、ブロック１１４でＧＣ元論理ブロックの中の全ての疑似物理クラスタからデータをリードしていないと判定すると、ブロック１０４を再度実行する。すなわち、コントローラ２２は、ＧＣ元論理ブロックの中の他の疑似物理クラスタからデータをリードし、同様の処理を繰り返す。
【００３６】
コントローラ２２は、ブロック１１４でＧＣ元論理ブロックの中の全ての疑似物理クラスタからデータをリードしたと判定すると、ブロック１１６で、ＧＣ元論理ブロックは論理不明クラスタを含むか否かを判定する。ＧＣ元論理ブロックが論理不明クラスタを含まない場合、ＧＣ元論理ブロック内の有効クラスタの全てのデータはＧＣ先論理ブロックに移動されていて、ＧＣ元論理ブロックは消去可能であると判断できる。ＧＣ元論理ブロックが論理不明クラスタを含む場合、有効クラスタの全てのデータがＧＣ先論理ブロックに移動されているか不明であり、ＧＣ元論理ブロックは消去不可能であると判断できる。そのため、コントローラ２２は、ブロック１１６でＧＣ元論理ブロックは論理不明クラスタを含まないと判定すると、ブロック１１８で、ＧＣ元論理ブロックの全ての物理ブロックのデータを消去する。コントローラ２２は、ブロック１２２で、ブロック１１８で全データが消去されたＧＣ元論理ブロックをＧＣ先論理ブロックの候補とし、処理を終了する。
【００３７】
コントローラ２２は、ブロック１１６でＧＣ元論理ブロックは論理不明クラスタを含むと判定すると、ブロック１２４で、新論理ブロックを作成し、ＧＣ元論理ブロックに割り当てられていた全ての物理ブロックのデータを消去し、データ消去後の物理ブロックを新論理ブロックに割り当てる。
【００３８】
コントローラ２２は、ブロック１２６で、ＧＣ元論理ブロックを物理ブロックが割り当てられない論理不明ブロックとする。例えば、コントローラ２２は、ＧＣ元論理ブロックに割り当てられていた全ての物理ブロックを、存在し得ない物理ブロックとする。論理ブロックテーブル５８が論理ブロックに割り当てられる物理ブロックの物理アドレスを示す場合、物理アドレスとして使われないアドレスが論理ブロックテーブル５８内のＧＣ元論理ブロックに割り当てられる物理ブロック欄にライトされる。これにより、ホスト１０が論理不明クラスタ内のデータをリードしようとした場合、論理不明クラスタアドレスに対応する疑似物理クラスタアドレスが存在しないので、データはリードできず、リードエラーがホスト１０に返される。
【００３９】
コントローラ２２は、ブロック１２８で、新論理ブロックをＧＣ先論理ブロックの候補とし、処理を終了する。なお、ブロック１２６とブロック１２８の実行順番は図４の逆でも良い。
なお、図４は、ブロック１２８の後、処理が終了する例を示したが、ブロック１０２の判定処理を定期的に実行し、ガベージコレクションの開始タイミングになると、図４の処理が割り込みとして実行されても良い。
【００４０】
図５を参照して、新論理ブロックの作成を説明する。図５は、論理ブロックアドレスと物理ブロックアドレスとの割り当て関係を示す論理ブロックテーブル５８の状態変化の一例を示す。図５（ａ）は、ブロック１２４を実行する以前、例えばブロック１１６の実行中の論理ブロックテーブル５８を示す。図５（ｂ）は、ブロック１２４の処理が完了した時の論理ブロックテーブル５８を示す。図５（ｃ）は、ブロック１２６の処理が完了した時の論理ブロックテーブル５８を示す。（ｍ＋１）個の論理ブロック（論理ブロックアドレスＬＢ０〜ＬＢｍの論理ブロック）が作成されているとする。論理ブロックアドレスＬＢ０で示される論理ブロックには物理ブロックアドレスＰＢ０、ＰＢ１、…等で指定される物理ブロックが割り当てられ、論理ブロックアドレスＬＢｍで示される論理ブロックには物理ブロックアドレスＰＢｉ、ＰＢｉ＋１、…等で指定される物理ブロックが割り当てられている。図５では、論理ブロックには連続する物理ブロックアドレスの物理ブロックが割り当てられているが、これはあくまでも一例であり、任意の離散的な物理ブロックアドレスの物理ブロックが論理ブロックに割り当てられていても良い。論理ブロックアドレスＬＢｍの論理ブロックが論理不明クラスタを含むＧＣ元論理ブロック（論理不明ブロック）であるとする。ブロック１２４で作成された新論理ブロックの論理ブロックアドレスは、図５（ｂ）に示すように、ＬＢｍ＋１であるとする。
【００４１】
コントローラ２２は、ブロック１２６で、図５（ｃ）に示すように、論理ブロックテーブル５８内の論理ブロックアドレスＬＢｍで指定されるＧＣ元論理ブロックに対応する全ての物理ブロックの物理ブロックアドレスを、アドレスとして存在しえない値Ｎｕｌｌとする。これにより、ＧＣ元論理ブロックは不明物理ブロックとされる。Ｎｕｌｌの例は、１６ビットアドレスの場合、“ＦＦ”等がある。これにより、ホスト１０が論理不明クラスタ内のデータをリードしようとした場合、論理不明クラスタに対応する疑似物理クラスタのデータはリードできず、リードエラーがホスト１０に返される。
【００４２】
ブロック１２４のタイミングでは、論理ブロックアドレスＬＢｍのＧＣ元論理ブロック内の有効クラスタのデータは全てＧＣ先論理ブロックに移動されており、ＧＣ元論理ブロックに残っているデータは論理不明クラスタのデータのみであり、ＧＣ元論理ブロック内のデータはホスト１０により今後リードされることがないデータ、あるいはホスト１０に返送されないデータである。すなわち、ＧＣ元論理ブロックに割り当てられていた物理ブロックは今後使われないので消去可能な物理ブロックである。このため、ブロック１２４で、論理ブロックアドレスＬＢｍで指定されるＣＧ元論理ブロックに割り当てられていた物理ブロックアドレスＰＢｉ、ＰＢｉ＋１、…等で指定される物理ブロックのデータが消去され、データ消去後の物理ブロックが新論理ブロックに割り当てられ、消去済みの新論理ブロックがＧＣ先論理ブロックとして使用され得る。
【００４３】
これにより、論理不明クラスタが存在しても、ガベージコレクション処理に必要な消去済みのＧＣ先論理ブロックを確保でき、ガベージコレクション処理が実行不能となる状態を回避できる。
以下、具体的な状況毎のガベージコレクションの動作例を説明する。
【００４４】
図６、図７は、ＧＣ先論理ブロックが順次生成され、ガベージコレクションが実行され続ける場合の例を示す。論理ブロックＢＬ０、ＢＬ１、ＢＬ２、ＢＬ４、…がプログラム済みであり、論理ブロックＢＬ３が消去済みである。プログラム済みとは、新たなデータをライトする余地がない程度までデータがライトされている状態である。消去済み論理ブロックＢＬ３はＧＣ先論理ブロックとなり得る。
【００４５】
プログラム済みの論理ブロックＢＬ０、ＢＬ１、ＢＬ２、ＢＬ４、…では有効クラスタと無効クラスタが混在し、これらの論理ブロックＢＬ０、ＢＬ１、ＢＬ２、ＢＬ４、…はＧＣ元論理ブロックの候補であるとする。先ず、図６（ａ）に示すように、ＧＣ元論理ブロックの候補の中の１つ、例えば論理ブロックＢＬ０がＧＣ元論理ブロックとされ、ＧＣ元論理ブロックＢＬ０から疑似物理クラスタ単位でデータがリードされ、疑似物理クラスタが有効クラスタである場合、リードデータがＧＣ先論理ブロックＢＬ３に移動される。ＧＣ先論理ブロックＢＬ３の状態は消去済みからプログラム中に変化する。
【００４６】
ＧＣ元論理ブロックＢＬ０の全ての有効クラスタからリードしたデータがＧＣ先論理ブロックＢＬ３に移動されると、図６（ｂ）に示すように、ＧＣ元論理ブロックＢＬ０の全てのデータが消去される。消去済み論理ブロックＢＬ０はＧＣ先論理ブロックとなり得る。
【００４７】
次に、図６（ｃ）に示すように、ＧＣ元論理ブロックの候補の中の別の１つ、例えば論理ブロックＢＬ１がＧＣ元論理ブロックとされ、ＧＣ元論理ブロックＢＬ１から疑似物理クラスタ単位でデータがリードされ、疑似物理クラスタが有効クラスタである場合、リードデータがＧＣ先論理ブロックＢＬ３に移動される。
【００４８】
ＧＣ先論理ブロックＢＬ３に移動（ライト）されるデータの量が増えると、図７（ａ）に示すように、ＧＣ先論理ブロックＢＬ３の状態がプログラム済みになり、これ以上ＧＣ元論理ブロックＢＬ１からＧＣ先論理ブロックＢＬ３にデータを移動することができなくなる。
【００４９】
しかし、ＧＣ先論理ブロックとなり得る消去済み論理ブロックＢＬ０が存在しているので、この後は、図７（ｂ）に示すように、ＧＣ元論理ブロックＢＬ１の有効クラスタからリードしたデータがＧＣ先論理ブロックＢＬ０に移動され、ガベージコレクションが続行される。
【００５０】
ＧＣ元論理ブロックＢＬ１の全ての有効クラスタからデータがリードされ、ＧＣ先論理ブロックＢＬ０にデータが移動されると、図７（ｃ）に示すように、ＧＣ元論理ブロックＢＬ１の全てのデータが消去される。消去済み論理ブロックＢＬ１はＧＣ先論理ブロックとなり得る。このように、消去済み論理ブロックが新規に生成される限り、ガベージコレクションが継続される。
【００５１】
次に、図８、図９を参照して、ガベージコレクションの実行が継続できなくなる場合の例を示す。図６（ａ）の場合と同様に、図８（ａ）に示すように、ＧＣ元論理ブロックＢＬ０の有効クラスタからリードしたデータがＧＣ先論理ブロックＢＬ３に移動され、ガベージコレクションが実行される。
【００５２】
図８（ｂ）に示すように、ガベージコレクションの途中でＧＣ元論理ブロックＢＬ０の疑似物理クラスタからリードしたデータがリードエラーを含み、かつリードエラーが訂正不能である場合、当該クラスタが有効クラスタか無効クラスタかを判定できず、当該クラスタからリードしたデータをＧＣ先論理ブロックＢＬ３に移動することができない。
【００５３】
ＧＣ元論理ブロックＢＬ０の全ての有効クラスタからリードしたデータがＧＣ先論理ブロックＢＬ３に移動されると、図８（ｃ）に示すように、論理ブロックＢＬ１がＧＣ元論理ブロックとされ、ＧＣ元論理ブロックＢＬ１の有効クラスタからリードしたデータがＧＣ先論理ブロックＢＬ３に移動される。
【００５４】
ＧＣ先論理ブロックＢＬ３にライトされるデータの量が増えると、図９（ａ）に示すように、ＧＣ先論理ブロックＢＬ３の状態がプログラム済みになり、これ以上ＧＣ元論理ブロックＢＬ１からＧＣ先論理ブロックＢＬ３にデータを移動することができなくなる。
【００５５】
図６、図７に示した例では、この段階（図７（ａ））で消去済み論理ブロックＢＬ０が存在していたので、ＧＣ元論理ブロックＢＬ１についてのガベージコレクションが続行可能であった。しかし、図９（ａ）に示すように、ＧＣ先論理ブロックＢＬ３の状態がプログラム済みになった時、消去済み論理ブロックが１つも存在していないので、図９（ｂ）に示すように、ＧＣ元論理ブロックＢＬ１の有効クラスタからリードしたデータの移動先のＧＣ先論理ブロックが無く、これ以上ガベージコレクションを続行することが不可能である。
【００５６】
なお、図８（ｂ）に示す訂正不能なリードエラーが発生してから、図９（ａ）に示すＧＣ先論理ブロックＢＬ３の状態がプログラム済みになり、かつ消去済み論理ブロックが１つも存在していない状態となるまでの期間に、ＬＵＴ５６の全ての論理アドレスと物理アドレスとの対応関係を調べれば、訂正不能なリードエラーが生じたデータを格納する疑似物理クラスタが有効クラスタであるか無効クラスタであるかを判定できる。しかし、ＬＵＴ５６のサイズが大きいと、この期間内にＬＵＴ５６の全ての論理アドレスと物理アドレスとの対応関係を調べることは不可能である。
【００５７】
このような状況を避けるため、ＧＣ先論理ブロックとなり得る多数の消去済み論理ブロックを予め準備しておくことが考えられる。図１０、図１１は、消去済み論理ブロックを予め準備しておく場合のガベージコレクションの例を示す。論理ブロックＢＬ０、ＢＬ１、ＢＬ２、ＢＬ４、…がプログラム済みであり、論理ブロックＢＬ３、ｅＢＬ０、ｅＢＬ１、…が消去済みである。消去済み論理ブロックｅＢＬ０、ｅＢＬ１、…はＣＧ先論理ブロックとしてのみ使用され、ユーザデータの記憶には使用されない。消去済み論理ブロックｅＢＬ０、ｅＢＬ１、…は一度もユーザデータが記憶されていない論理ブロックでも良いし、ユーザデータが記憶されていたが、ガベージコレクションにより全てのデータが消去され、今後はユーザデータの記憶には使用されない論理ブロックでも良い。
【００５８】
図１０（ａ）に示すように、ＧＣ元論理ブロックＢＬ０の有効クラスタからリードしたデータがＧＣ先論理ブロックＢＬ３に移動される。ＧＣ先論理ブロックＢＬ３の状態は消去済みからプログラム中に変化する。
図１０（ｂ）に示すように、ガベージコレクションの途中でＧＣ元論理ブロックＢＬ０の疑似物理クラスタからリードしたデータが訂正不能である場合、リードデータをＧＣ先論理ブロックＢＬ３に移動することができない。
【００５９】
ＧＣ元論理ブロックＢＬ０の全ての有効クラスタからリードしたデータがＧＣ先論理ブロックＢＬ３に移動されると、図１０（ｃ）に示すように、論理ブロックＢＬ１がＧＣ元論理ブロックとされ、ＧＣ元論理ブロックＢＬ１の有効クラスタからリードしたデータがＧＣ先論理ブロックＢＬ３に移動される。
【００６０】
ＧＣ先論理ブロックＢＬ３にライトされるデータの量が増えると、図１１（ａ）に示すように、ＧＣ先論理ブロックＢＬ３の状態がプログラム済みになり、これ以上ＧＣ元論理ブロックＢＬ１からＧＣ先論理ブロックＢＬ３にデータを移動することができなくなる。
【００６１】
図８、図９に示した例では、図９（ａ）、（ｂ）に示すように、ＧＣ先論理ブロックＢＬ３の状態がプログラム済みになった時、消去済み論理ブロックが１つも存在していないので、ガベージコレクションは続行不可能であった。しかし、図１０、図１１に示す例では、ＧＣ先論理ブロックとして使用可能な消去済み論理ブロックｅＢＬ０、ｅＢＬ１、…が予め準備されているので、論理不明ブロックが生じても、ガベージコレクションは続行可能である。すなわち、図１１（ａ）に示すように、ＧＣ先論理ブロックＢＬ３の状態がプログラム中からプログラム済みに変化した場合、図１１（ｂ）に示すように、消去済み論理ブロックｅＢＬ０がＧＣ先論理ブロックとされ、ＧＣ元論理ブロックＢＬ１の有効クラスタからリードしたデータがＧＣ先論理ブロックｅＢＬ０に移動され、ガベージコレクションが続行される。
【００６２】
ＧＣ元論理ブロックＢＬ１の全ての有効クラスタからデータがリードされ、ＧＣ先論理ブロックｅＢＬ０にデータが移動されると、図１１（ｃ）に示すように、ＧＣ元論理ブロックＢＬ１の全てのデータが消去される。消去済み論理ブロックＢＬ１はＧＣ先論理ブロックとなり得る。
【００６３】
このように、消去済み論理ブロックを予め用意しておくことにより、論理不明ブロックが生じても、ＧＣ先論理ブロックが枯渇する可能性は小さくなる。しかし、予め準備する消去済み論理ブロックのためにフラッシュメモリの記憶コストが高くなるデメリットもある。図１０、図１１の例では、ＬＵＴ５６の全ての論理アドレスと物理アドレスとの対応関係を調べ、論理不明ブロックが有効クラスタであるか無効クラスタであるかを判定するための期間は、図１０（ｂ）に示す訂正不能リードエラーが発生してから消去済み論理ブロックが１つも無くなるまでの期間である。このため、図８、図９に示す場合に比べて長時間であり、ＬＵＴ５６を調べて論理不明ブロックが有効クラスタであるか無効クラスタであるかを判定するための時間的余裕がある、
図１２、図１３は、消去済み論理ブロックを予め用意することなく、ＧＣ先論理ブロックの枯渇を防ぐことができるガベージコレクションの動作を示す。図１２（ａ）に示すように、ＧＣ元論理ブロックＢＬ０の有効クラスタからリードしたデータがＧＣ先論理ブロックＢＬ３に移動される。
【００６４】
図１２（ｂ）に示すように、ガベージコレクションの途中でＧＣ元論理ブロックＢＬ０からリードしたデータが訂正不能である場合、当該クラスタが有効クラスタか無効クラスタかを判定できず、当該クラスタからリードしたデータをＧＣ先論理ブロックＢＬ３に移動することができない。
【００６５】
ＧＣ元論理ブロックＢＬ０の全ての有効クラスタからリードしたデータがＧＣ先論理ブロックＢＬ３に移動されると、図１２（ｃ）に示すように、新論理ブロックｎＢＬ０が生成される。新論理ブロックｎＢＬ０に割り当てられる物理ブロックはＧＣ元論理ブロックＢＬ０に割り当てられていた物理ブロックであり、そのデータは消去されている。とともに、ＧＣ元論理ブロックＢＬ０が物理ブロックが割り当てられない論理不明ブロックに変更される。さらに、図１２（ｃ）に示すように、論理ブロックＢＬ１がＧＣ元論理ブロックとされ、ＧＣ元論理ブロックＢＬ１の有効クラスタからリードしたデータがＧＣ先論理ブロックＢＬ３にデータが移動される。
【００６６】
ＧＣ先論理ブロックＢＬ３にライトされるデータが増えると、図１３（ａ）に示すように、ＧＣ先論理ブロックＢＬ３の状態がプログラム済みになり、ＧＣ元論理ブロックＢＬ１からＧＣ先論理ブロックＢＬ３にデータを移動することができなくなる。しかし、消去済み論理ブロックｎＢＬ０が存在するので、論理不明クラスタを含む論理不明ブロックが生じても、ＧＣ先論理ブロックｎＢＬ０が確保でき、図１３（ｂ）に示すように、ＧＣ元論理ブロックＢＬ１の有効クラスタからリードしたデータがＧＣ先論理ブロックｎＢＬ０に移動される。
【００６７】
ＧＣ元論理ブロックＢＬ１のデータリード中に訂正不能なリードエラーが生じず、ＧＣ元論理ブロックＢＬ１の有効クラスタの全てのデータがＧＣ先論理ブロックｎＢＬ０に移動されると、図１３（ｃ）に示すように、ＧＣ元論理ブロックＢＬ１の全てのデータが消去され、消去済み論理ブロックＢＬ１はＧＣ先論理ブロックとなり得る。
【００６８】
図１２、図１３の動作によれば、ガベージコレクションにおいてＧＣ元論理ブロックの疑似物理クラスタからデータがリードされる際、リードエラーが発生し、リードエラーが訂正不能な場合、ＧＣ元論理ブロックの有効クラスタからＧＣ先論理ブロックにデータが移動された後、新論理ブロックを作成する。ＧＣ元論理ブロックに割り当てられていた物理ブロックのデータを消去してから、消去済み物理ブロックを新論理ブロックに割り当てる。これにより、消去済みのＧＣ先論理ブロックを確保することができる。ＧＣ元論理ブロックは、物理ブロックが割り当てられない論理不明ブロックとされる。ＧＣ元論理ブロックの有効クラスタのデータはＧＣ先論理ブロックに移動されるので、以後、このデータに関するリードコマンドがホスト１０からコントローラ２２に送信されると、ＬＵＴ５６はＧＣ先論理ブロック内の疑似物理クラスタ又は物理ブロックを指すので、ＧＣ先論理ブロック内の疑似物理クラスタ又は物理ブロックからデータがリードされる。ＧＣ元論理ブロックの無効クラスタ及び論理不明クラスタのデータはＧＣ元論理ブロックに残るが、ＧＣ元論理ブロックにはもはや物理ブロックが割り当てられていないので、以後、無効クラスタ及び論理不明クラスタのデータに関するリードコマンドがホスト１０からコントローラ２２に送信されると、データがリードされず、ホスト１０にリードエラーが返送される。コントローラ２２内では、ＬＵＴ５６が存在しない疑似物理クラスタを指す物理的なリードエラーと、データが訂正不能なエラーを含むリードエラーが区別されているが、コントローラ２２がホスト１０に返送するリードエラーにおいて上記２つのエラーの区別は無い。論理不明クラスタに関するリードリクエストに対してリードエラーが返送されるのは、新論理ブロックを作成しない場合でも、同様である。このため、訂正不能なリードエラーが生じた場合、ホスト１０から見たＳＳＤ２０の動作は、新論理ブロックを作成しない場合でも新論理ブロックを作成する場合も変わらない。図１２、図１３の動作によれば、論理不明クラスタを含むＧＣ元論理ブロックのデータが消去できない状況に対応するために、ＧＣ先論理ブロックとして使用され得る消去済み論理ブロックを設ける必要がない。１論理ブロックサイズが大きくなると、論理ブロック数が減るので、ＧＣ先論理ブロックが枯渇し易い。しかし、図１２、図１３に示すように、論理不明ブロックが生じると、新論理ブロックが作成されるので、ＣＧ先論理ブロックが枯渇しにくい。
【００６９】
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除しても良い。更に、異なる実施形態に亘る構成要素を適宜組み合せても良い。
【符号の説明】
【００７０】
１０…ホスト、２０…ＳＳＤ、２２…コントローラ、２４…ＮＡＮＤ型フラッシュメモリ、２６…ＲＡＭ、４２…リード制御部、４４…ライト制御部、４６…ＧＣ制御部、５６…ＬＵＴ、５８…論理ブロックテーブル。
【図１】
2020017134.tif 000003
【図２】
2020017134.tif 000004
【図３】
2020017134.tif 000005
【図４】
2020017134.tif 000006
【図５】
2020017134.tif 000007
【図６】
2020017134.tif 000008
【図７】
2020017134.tif 000009
【図８】
2020017134.tif 000010
【図９】
2020017134.tif 000011
【図１０】
2020017134.tif 000012
【図１１】
2020017134.tif 000013
【図１２】
2020017134.tif 000014
【図１３】
2020017134.tif 000015