(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-03-17
(45)【発行日】2022-03-28
(54)【発明の名称】記憶装置及び記憶制御方法
(51)【国際特許分類】
G06F 11/10 20060101AFI20220318BHJP
G06F 12/02 20060101ALI20220318BHJP
G06F 12/00 20060101ALI20220318BHJP
【FI】
G06F11/10 668
G06F12/02 530C
G06F12/02 570A
G06F12/00 597U
(21)【出願番号】P 2018140503
(22)【出願日】2018-07-26
【審査請求日】2021-03-18
(73)【特許権者】
【識別番号】318010018
【氏名又は名称】キオクシア株式会社
(74)【代理人】
【識別番号】110001737
【氏名又は名称】特許業務法人スズエ国際特許事務所
(72)【発明者】
【氏名】安田 哲也
【審査官】田中 幸雄
(56)【参考文献】
【文献】特開2013-200722(JP,A)
【文献】特開2013-137771(JP,A)
【文献】特開2011-197945(JP,A)
【文献】特開2013-200741(JP,A)
【文献】米国特許出願公開第2011/0238629(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 11/10
G06F 12/02
G06F 12/00
(57)【特許請求の範囲】
【請求項1】
複数の物理ブロックを有し、各物理ブロックは複数のクラスタを有し、物理ブロック単位でデータが消去され、クラスタ単位でデータがリード又はライトされる不揮発性メモリと、
外部装置により指定される論理アドレスと、前記論理アドレスに対応する前記不揮発性メモリの物理アドレスとの関係を記憶する第1テーブルと、
前記不揮発性メモリの複数の物理ブロックが割り当てられる論理ブロックと、前記複数の物理ブロックとの関係を記憶する第2テーブルと、
ガベージコレクション元論理ブロックの全ての有効クラスタからリードしたデータをガベージコレクション先論理ブロックに移動し、前記ガベージコレクション元論理ブロックの全てのデータを消去し、前記第1テーブルを更新するコントローラと、を具備し、
前記コントローラは、前記ガベージコレクション元論理ブロックのクラスタからリードしたデータが訂正不能な場合、新論理ブロックを作成し、前記ガベージコレクション元論理ブロックに割り当てられていた複数の物理ブロックの全てのデータを消去し、データが消去された前記複数の物理ブロックを前記新論理ブロックに割り当て、前記ガベージコレクション元論理ブロックに実質的に物理ブロックが割り当てられないように前記第2テーブルを更新する記憶装置。
【請求項2】
前記コントローラは、前記ガベージコレクション元論理ブロックに存在し得ない物理ブロックを割り当てることにより、前記ガベージコレクション元論理ブロックに実質的に物理ブロックが割り当てられないように前記第2テーブルを更新する請求項1記載の記憶装置。
【請求項3】
前記論理ブロックには複数の疑似物理クラスタが割り当てられ、
前記複数の疑似物理クラスタの中の1つの疑似物理クラスタはユーザデータと論理クラスタアドレスを格納し、
前記論理クラスタアドレスは前記1つの疑似物理クラスタに対応する論理アドレスを示し、
前記第1テーブルは、前記論理クラスタアドレスに対応する疑似物理クラスタアドレスを格納し、
前記疑似物理クラスタアドレスは、前記1つの疑似物理クラスタが含まれる前記複数の論理ブロックを特定する情報と、特定された前記論理ブロック内の前記1つの疑似物理クラスタの相対位置を示す情報を含む請求項1記載の記憶装置。
【請求項4】
前記コントローラは、前記ガベージコレクション元論理ブロックの有効疑似物理クラスタからリードしたデータを前記ガベージコレクション先論理ブロックの疑似物理クラスタに移動し、前記第1テーブルの前記有効疑似物理クラスタに対応する論理アドレスに対応する前記疑似物理クラスタアドレスを前記ガベージコレクション先論理ブロックの前記疑似物理クラスタのアドレスに変更する請求項3記載の記憶装置。
【請求項5】
前記第1テーブル内の第1疑似物理クラスタアドレスにより指定される第1疑似物理クラスタが格納する第1論理クラスタアドレスに対応する第2疑似物理クラスタアドレスが前記第1疑似物理クラスタアドレスと等しい場合、前記第1疑似物理クラスタは有効疑似物理クラスタであり、
第2疑似物理クラスタアドレスが前記第1疑似物理クラスタアドレスと等しくない場合、前記第1疑似物理クラスタは無効疑似物理クラスタである請求項3記載の記憶装置。
【請求項6】
前記コントローラは、前記第2テーブルを更新後、前記外部装置から、リードしたデータが訂正不能な前記ガベージコレクション元論理ブロックの前記クラスタに関するリードコマンドを受けると、リードエラーを示す情報を前記外部装置へ返信する請求項1記載の記憶装置。
【請求項7】
複数の物理ブロックを有し、各物理ブロックは複数のクラスタを有し、物理ブロック単位でデータが消去され、クラスタ単位でデータがリード又はライトされる不揮発性メモリと、
外部装置により指定される論理アドレスと、前記論理アドレスに対応する前記不揮発性メモリの物理アドレスとの関係を記憶する第1テーブルと、
前記不揮発性メモリの複数の物理ブロックが割り当てられる論理ブロックと、前記複数の物理ブロックとの関係を記憶する第2テーブルと、
ガベージコレクション元論理ブロックの全ての有効クラスタからリードしたデータをガベージコレクション先論理ブロックに移動し、前記ガベージコレクション元論理ブロックの全てのデータを消去し、前記第1テーブルを更新するコントローラと、を具備する記憶装置の記憶制御方法であって、
前記ガベージコレクション元論理ブロックのクラスタからリードしたデータが訂正不能な場合、前記コントローラにより、新論理ブロックを作成し、前記ガベージコレクション元論理ブロックに割り当てられていた複数の物理ブロックの全てのデータを消去し、データが消去された前記複数の物理ブロックを前記新論理ブロックに割り当て、前記ガベージコレクション元論理ブロックに実質的に物理ブロックが割り当てられないように前記第2テーブルを更新する記憶制御方法。
【請求項8】
前記コントローラにより、前記ガベージコレクション元論理ブロックに存在し得ない物理ブロックを割り当てることにより、前記ガベージコレクション元論理ブロックに実質的に物理ブロックが割り当てられないように前記第2テーブルを更新する請求項7記載の記憶制御方法。
【請求項9】
前記論理ブロックには複数の疑似物理クラスタが割り当てられ、
前記複数の疑似物理クラスタの中の1つの疑似物理クラスタはユーザデータと論理クラスタアドレスを格納し、
前記論理クラスタアドレスは前記1つの疑似物理クラスタに対応する論理アドレスを示し、
前記第1テーブルは、前記論理クラスタアドレスに対応する疑似物理クラスタアドレスを格納し、
前記疑似物理クラスタアドレスは、前記1つの疑似物理クラスタが含まれる前記複数の論理ブロックを特定する情報と、特定された前記論理ブロック内の前記1つの疑似物理クラスタの相対位置を示す情報を含む請求項7記載の記憶制御方法。
【請求項10】
前記コントローラにより、前記ガベージコレクション元論理ブロックの有効疑似物理クラスタからリードしたデータを前記ガベージコレクション先論理ブロックの疑似物理クラスタに移動し、前記第1テーブルの前記有効疑似物理クラスタに対応する論理アドレスに対応する前記疑似物理クラスタアドレスを前記ガベージコレクション先論理ブロックの前記疑似物理クラスタのアドレスに変更する請求項9記載の記憶制御方法。
【請求項11】
前記第1テーブル内の第1疑似物理クラスタアドレスにより指定される第1疑似物理クラスタが格納する第1論理クラスタアドレスに対応する第2疑似物理クラスタアドレスが前記第1疑似物理クラスタアドレスと等しい場合、前記第1疑似物理クラスタは有効疑似物理クラスタであり、
第2疑似物理クラスタアドレスが前記第1疑似物理クラスタアドレスと等しくない場合、前記第1疑似物理クラスタは無効疑似物理クラスタである請求項9記載の記憶制御方法。
【請求項12】
前記コントローラにより、前記第2テーブルを更新後、前記外部装置から、リードしたデータが訂正不能な前記ガベージコレクション元論理ブロックの前記クラスタに関するリードコマンドを受けると、リードエラーを示す情報を前記外部装置へ返信する請求項7記載の記憶制御方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は記憶装置及び記憶制御方法に関する。
【背景技術】
【0002】
フラッシュメモリ等の不揮発性半導体メモリを備え、ハードディスクドライブ(HDD)と同様のインタフェースを持つソリッドステートドライブ(SSD)と呼ばれる記憶装置では、データ消去の単位とデータリード/ライトの単位とが異なる。一例として、データ消去の単位は物理ブロックであり、データリード/ライトの単位はそれより小さいクラスタである。1物理ブロックは多数のワード線を含み、1ワード線は多数のページを含み、1ページは複数のクラスタを含む。
【0003】
SSDでは、データの書き換えが進むと、物理ブロック内で有効クラスタと無効クラスタが混在する可能性が高くなる。有効クラスタは、その物理アドレスが、論理アドレス/物理アドレス変換テーブルにより指定されているクラスタであり、無効クラスタは、その物理アドレスが論理アドレス/物理アドレス変換テーブルにより指定されていないクラスタである。このような物理ブロックが増えると、記憶領域が有効に活用できない。
【0004】
記憶領域を有効に活用するために、コンパクション又はガベージコレクション(以下、ガベージコレクション又はGCと称する)と呼ばれる処理が行われる。ガベージコレクションでは、データが消去されているフリーブロックの個数を増やすため、有効クラスタと無効クラスタが混在する物理ブロックを含む論理ブロック(GC元論理ブロックと称する)内の全ての有効クラスタのデータが消去済み論理ブロック(GC先論理ブロックと称する)に移動される。全ての有効クラスタのデータがGC先論理ブロックに移動されたGC元論理ブロックの全てのデータは消去される。消去済みのGC元論理ブロックはフリーブロックとして解放され、GC先論理ブロックとして再利用することが可能となる。
【0005】
GC元論理ブロック内のクラスタのデータをリードする際、リードデータにエラーが生じ、かつそのエラーが訂正不能な場合がある。この場合、データがリードされたクラスタは有効クラスタであるか無効クラスタであるか判断できない。そのため、あるクラスタのデータにリードエラーが生じ、かつそのエラーが訂正不能な場合、ガベージコレクションを実行できず、GC元論理ブロックのデータを消去することができず、GC元論理ブロックをGC先論理ブロックとして再利用することができない。
【先行技術文献】
【特許文献】
【0006】
【文献】特開2013-200722号公報
【文献】特開2013-174975号公報
【文献】米国特許第8825946号明細書
【文献】特許第6313242号公報
【文献】米国特許出願公開第2013/0124842号明細書
【発明の概要】
【発明が解決しようとする課題】
【0007】
従来の記憶装置では、GC元論理ブロックのクラスタのデータをリードする際、リードエラーが生じ、かつそのエラーが訂正不能な場合、GC先論理ブロックが枯渇し、ガベージコレクションを実行できなくなる恐れがある。
本発明の目的は、訂正不能なリードエラーが生じてもGC元論理ブロックを確保することができ、ガベージコレクションを実行することができる記憶装置及び記憶制御方法を提供することである。
【課題を解決するための手段】
【0008】
実施形態によれば、記憶装置は、
複数の物理ブロックを有し、各物理ブロックは複数のクラスタを有し、物理ブロック単位でデータが消去され、クラスタ単位でデータがリード又はライトされる不揮発性メモリと、
外部装置により指定される論理アドレスと、前記論理アドレスに対応する前記不揮発性メモリの物理アドレスとの関係を記憶する第1テーブルと、
前記不揮発性メモリの複数の物理ブロックが割り当てられる論理ブロックと、前記複数の物理ブロックとの関係を記憶する第2テーブルと、
ガベージコレクション元論理ブロックの全ての有効クラスタからリードしたデータをガベージコレクション先論理ブロックに移動し、前記ガベージコレクション元論理ブロックの全てのデータを消去し、前記第1テーブルを更新するコントローラと、を具備する。
【0009】
前記コントローラは、前記ガベージコレクション元論理ブロックのクラスタからリードしたデータが訂正不能な場合、新論理ブロックを作成し、前記ガベージコレクション元論理ブロックに割り当てられていた複数の物理ブロックの全てのデータを消去し、データが消去された前記複数の物理ブロックを前記新論理ブロックに割り当て、前記ガベージコレクション元論理ブロックに実質的に物理ブロックが割り当てられないように前記第2テーブルを更新する。
【図面の簡単な説明】
【0010】
【
図1】実施形態による記憶装置の一例の構成を示すブロック図である。
【
図2】物理ブロック、論理ブロック及び疑似物理クラスタの関係を説明する図である。
【
図4】ガベージコレクション処理の一例を示すフローチャートである。
【
図5】論理ブロックテーブル58の状態変化の一例を示す図である。
【
図6】ガベージコレクションの一例を説明する図である。
【
図7】ガベージコレクションの一例を説明する図である。
【
図8】GC先論理ブロックが枯渇する場合のガベージコレクションの一例を説明する図である。
【
図9】GC先論理ブロックが枯渇する場合のガベージコレクションの一例を説明する図である。
【
図10】GC先論理ブロックの枯渇を回避するガベージコレクションの一例を説明する図である。
【
図11】GC先論理ブロックの枯渇を回避するガベージコレクションの一例を説明する図である。
【
図12】GC先論理ブロックの枯渇を回避するガベージコレクションの他の例を説明する図である。
【
図13】GC先論理ブロックの枯渇を回避するガベージコレクションの他の例を説明する図である。
【発明を実施するための形態】
【0011】
以下、実施の形態について図面を参照して説明する。なお、開示はあくまで一例にすぎず、以下の実施形態に記載した内容により発明が限定されるものではない。当業者が容易に想到し得る変形は、当然に開示の範囲に含まれる。説明をより明確にするため、図面において、各部分のサイズ、形状等を実際の実施態様に対して変更して模式的に表す場合もある。複数の図面において、対応する要素には同じ参照数字を付して、詳細な説明を省略する場合もある。
【0012】
図1は実施形態に係るSSD20の一例の構成を示すブロック図である。SSD20は、不揮発性半導体メモリにデータをライトするとともに、不揮発性半導体メモリからデータをリードするように構成された半導体ストレージデバイスである。SSD20は、ホスト10に接続される。ホスト10は、SSD20にアクセスし、SSD20にデータをライトするとともに、SSD20からデータをリードする。ホスト10は、大量且つ多様なデータをSSD20に保存するサーバ(ストレージサーバとも称する)であっても良いし、パーソナルコンピュータであっても良い。SSD20は、ホスト10のメインストレージとして使用され得る。SSD20は、ホスト10に内蔵されても良いし、ホスト10にケーブルまたはネットワークを介して接続されても良い。
【0013】
SSD20は、コントローラ22、NAND型フラッシュメモリ(以下、フラッシュメモリと称する)24、RAM26を備える。コントローラ22は、ホストインタフェース(I/F)32、CPU34、NANDインタフェース(I/F)36、RAMインタフェース(I/F)38を備える。CPU34、ホストI/F32、NAND I/F36、RAM I/F38はバスライン40に接続され得る。コントローラ22は、ソフトウェアに従って動作するCPUから構成しても良いし、System-on-chip(SoC)、ASIC、FPGA等のような回路によって構成しても良い。
【0014】
ホスト10とSSD20とを電気的に相互接続するためのホストI/F32としては、例えばSmall Computer System Interface(SCSI)(登録商標)、PCI Express(登録商標)(PCIe(登録商標)とも称する)、Serial Attached SCSI(SAS)(登録商標)、Serial Advanced Technology Attachment(SATA)(登録商標)、Non Volatile Memory Express(NVMe(登録商標))、Universal Serial Bus(USB)(登録商標)等の規格が使用され得るが、これらに限定されない。ホストI/F32は、ホスト10から様々なコマンド、例えばI/Oコマンド、各種制御コマンド等を受信する回路として機能する。I/Oコマンドには、ライトコマンド、リードコマンド等が含まれ得る。
【0015】
不揮発性半導体メモリとしてのフラッシュメモリ24は、例えばNAND型のフラッシュメモリからなるが、NAND型のフラッシュメモリに限らず、他の不揮発性半導体メモリ、例えば、NOR型フラッシュメモリ、MRAM(Magnetoresistive Random Access Memory)、PRAM(Phasechange Random Access Memory)、ReRAM(Resistive Random Access Memory)又はFeRAM(Ferroelectric Random Access Memory)等から構成されても良い。フラッシュメモリ24は、複数のフラッシュメモリチップ(すなわち、複数のフラッシュメモリダイ)を含んでいても良い。各フラッシュメモリチップは、マトリクス状に配置された複数のメモリセルを含むメモリセルアレイを含む。フラッシュメモリ24は、二次元構造のNAND型フラッシュメモリであっても良いし、三次元構造のNAND型フラッシュメモリであっても良い。
【0016】
各チップは、複数の不揮発性のメモリセルを含む複数の物理ブロックを備える。フラッシュメモリ24では、物理ブロック単位でデータが一括して消去される。すなわち、物理ブロックは、データ消去単位の領域である。データリード/データライトは、クラスタ単位で行われる。クラスタに対応する論理アドレス空間上の概念として論理アドレス(LBA)範囲がある。1クラスタは1つの論理アドレス範囲に関連づけられたデータ、又は1つの論理アドレス範囲の一部分に関連づけられたデータを含む。フラッシュメモリ24のリード、ライトはコントローラ22により制御される。フラッシュメモリ24はNAND I/F36に接続される。
【0017】
1ビット又は複数ビットのデータがメモリセルに格納可能である。メモリセル当たりに複数ビットを格納可能に構成されたフラッシュメモリの例には、メモリセル当たりに2ビットのデータを格納可能なマルチレベルセル(Multi-Level Cell(MLC)、あるいはFour-Level Cell(4LCと称する))フラッシュメモリ、メモリセル当たりに3ビットのデータを格納可能なトリプルレベルセル(Triple-Level Cell(TLCと称する)、あるいはEight-Level Cell(8LCと称する))フラッシュメモリ、メモリセル当たりに4ビットのデータを格納可能なクワッドレベルセル(Quad-Level Cell(QLCと称する)、あるいはSixteen-Level Cell(16LCと称する))フラッシュメモリ、等が含まれる。メモリセル当たりに1ビットを格納するように構成されたフラッシュメモリは、シングルレベルセル(Single-Level Cell(SLC又は2LCと称する))フラッシュメモリと称される。
【0018】
RAM26は、揮発性メモリであるDRAM又はSRAM等からなり、コントローラ22の外部に設けるのではなく、コントローラ22に内蔵されていても良い。RAM26には、フラッシュメモリ24にライトされるデータを一時的に格納するためのバッファ領域であるライトバッファ52と、フラッシュメモリ24からリードしたデータを一時的に格納するためのバッファ領域であるリードバッファ54と、アドレス変換テーブル(論理アドレス/物理アドレス変換テーブルとも称する)として機能するルックアップテーブル(LUTと称する)56と、論理ブロックと物理ブロックとの割り当て関係を示す論理ブロックテーブル58を備える。LUT56は、論理クラスタアドレスと疑似物理クラスタアドレスの間のマッピングを管理する。RAM26はRAM I/F38に接続される。
【0019】
コントローラ22は、フラッシュメモリ24のデータ管理およびブロック管理を実行するように構成されたフラッシュトランスレーション層(FTL)として機能しても良い。このFTLによって実行されるデータ管理には、(1)SSD20の論理アドレス(論理クラスタアドレス)とフラッシュメモリ24の物理アドレス(疑似物理クラスタアドレス)との間の対応関係を示すマッピング情報の管理、(2)クラスタ単位のリード/ライトとブロック単位の消去動作とを隠蔽するための処理、等が含まれる。論理アドレスは、SSD20をアドレス指定するためにホスト10によって指定されるアドレスである。
【0020】
論理アドレスと物理アドレスとの間のマッピングの管理は、LUT56を用いて実行される。コントローラ22は、LUT56を使用して、論理アドレスと物理アドレスとの間のマッピングをクラスタサイズ単位で管理する。ある論理アドレスに対応する物理アドレスは、この論理アドレスで指定されるデータがライトされたフラッシュメモリ24内の物理記憶位置を示す。LUT56は、SSD20の電源オン時にフラッシュメモリ24からRAM26にロードされても良い。
【0021】
CPU34は、リード制御部42、ライト制御部44、ガベージコレクション(GCと称する)制御部46等として機能することができる。なお、リード制御部42、ライト制御部44、GC制御部46の一部または全部も、コントローラ22内の専用ハードウェアによって実現しても良い。ライト制御部44は、ライトデータを誤り訂正符号化し、符号化データをフラッシュメモリ24にライトする。リード制御部42は、フラッシュメモリ24からリードしたデータに誤り訂正復号し、リードデータの誤りを訂正する。誤り訂正符号化及び誤り訂正復号はコントローラ22内の専用ハードウェアによって実現しても良い。GC制御部46は適宜なタイミングでガベージコレクションを実行する。
【0022】
ライト制御部44は、ある論理アドレスに対応する更新データを、この論理アドレスに対応する物理アドレスで指定されるクラスタではなく、別のクラスタにライトする。そして、ライト制御部44は、LUT56を更新して、この論理アドレスをこの別のクラスタを指定する物理アドレスに関連付ける。これにより、以前のデータはリードされることがなく、以前のデータを格納しているクラスタは無効化される。
【0023】
ブロック管理には、バッドブロックの管理、ウェアレベリング、ガベージコレクション、等が含まれる。
CPU34は、ホストI/F32、NAND I/F36、RAM I/F38を制御するように構成されたプロセッサである。CPU34は、図示しないROM等に格納されている制御プログラム(ファームウェア)を実行することによって様々な処理を行う。このCPU34は、上述のFTL処理に加え、ホスト10からの様々なコマンドを処理するためのコマンド処理等を実行することができる。CPU34の動作は、CPU34によって実行される上述のファームウェアによって制御される。なお、FTL処理およびコマンド処理の一部または全部は、コントローラ22内の専用ハードウェアによって実行しても良い。
【0024】
図2は、物理ブロック、論理ブロック及び疑似物理クラスタの関係を説明する図である。上述したように、NANDチップは複数の物理ブロックを含み、複数の物理ブロックが1つの論理ブロックに割り当てられる。1論理ブロックに割り当てられる複数の物理ブロックは単一のチップに含まれる複数の物理ブロックでも良いし、異なるチップに含まれる複数の物理ブロックでも良い。1論理ブロックに割り当てられる物理ブロックの数は、論理ブロックに関わらず一定でも良いし、論理ブロックによって異なっても良い。1つの論理ブロックには複数の疑似物理クラスタが割り当てられる。1疑似物理クラスタに格納される情報はユーザデータ(例えば、4KiB)と冗長部(例えば、12バイト)からなる。冗長部は論理クラスタアドレスとその他の情報を含む。
【0025】
疑似物理クラスタアドレスは、疑似物理クラスタがどの論理ブロックに含まれるかを示す情報と、疑似物理クラスタが論理ブロック内の先頭の疑似物理クラスタから何番目の疑似物理クラスタであるか、すなわち疑似物理クラスタの論理ブロック内の相対的な位置を示す情報とからなる。ホスト10は疑似物理アドレスにアクセスする際、論理クラスタアドレスを指定する。論理アドレスに対応する物理アドレス、即ち論理クラスタアドレスと疑似物理クラスタアドレスとのマッピングを示す情報がLUT56に格納される。
【0026】
図3は、LUT56の一例を示す。LUT56は疑似物理クラスタアドレスを記憶し、疑似物理クラスタアドレスのインデックスが論理クラスタアドレスに対応する。論理クラスタアドレスはインデックス×クラスタサイズ(4KiB)で表される。なお、4KiBは論理クラスタサイズであり、物理クラスタサイズは4KiB+12Bytesである。ホスト10から与えられた論理クラスタアドレスをクラスタサイズで除することにより、インデックスが求められると、論理クラスタアドレスに対応する疑似物理クラスタアドレスが求められる。
【0027】
例えば、インデックス3の疑似物理クラスタアドレスPC3で指定される疑似物理クラスタAに格納されている情報の中の冗長部の中の論理クラスタアドレスがインデックス3に対応する場合、疑似物理クラスタAは有効クラスタである。同様に、インデックスmの疑似物理クラスタアドレスPCmで特定される疑似物理クラスタBに格納されている情報の中の冗長部の中の論理クラスタアドレスがインデックスmに対応する場合、疑似物理クラスタBは有効クラスタである。一方、LUT56から指定されていない疑似物理クラスタCは無効クラスタである。
【0028】
このように、LUT56の疑似物理クラスタアドレスを全て調べれば、疑似物理クラスタが有効クラスタであるか無効クラスタであるかを判断することができるが、以下のようにしても、疑似物理クラスタが有効クラスタであるか無効クラスタであるかを判断することができる。例えば、疑似物理クラスタDの疑似物理クラスタアドレスがPCdであり、疑似物理クラスタDの冗長部の論理クラスタアドレスがLCdであり、LUT56内で論理クラスタアドレスLCdに対応する疑似物理クラスタアドレスがPCeであるとする。疑似物理クラスタアドレスPCd、PCeが等しい場合、疑似物理クラスタDは有効クラスタであり、疑似物理クラスタアドレスPCd、PCeが等しくない場合、疑似物理クラスタDは無効クラスタであると判断できる。すなわち、LUT56のある疑似物理クラスタアドレスで指定される疑似物理クラスタが格納する情報内の論理クラスタアドレスに対応する疑似物理クラスタアドレスが上記ある疑似物理クラスタと一致する場合、当該疑似物理クラスタは有効クラスタであり、一致しない場合、当該疑似物理クラスタは無効クラスタである。
【0029】
例えば、ホスト10からある論理クラスタアドレスLC1にデータDA1をライトするコマンドが送信されると、ライト制御部44はいずれかの疑似物理クラスタ(このクラスタの疑似物理クラスタアドレスをPC1とする)にデータDA1をライトする。ライト制御部44は論理クラスタアドレスLC1と疑似物理クラスタアドレスPC1とのマッピングをLUT56に設定する。この後、ホスト10から論理クラスタアドレスLC1に対してデータDA2を上書きするライトコマンドが送信されると、ライト制御部44は先の疑似物理クラスタとは別のいずれかの疑似物理クラスタ(このクラスタの疑似物理クラスタアドレスPC2とする)にデータDA2をライトする。ライト制御部44は論理クラスタアドレスLC1と疑似物理クラスタアドレスPC2とのマッピングをLUT56に設定する。これにより、疑似物理クラスタアドレスPC1はLUT56から指定されなくなり、データDA1がライトされた疑似物理クラスタ(疑似物理クラスタアドレスはPC1)が無効クラスタとなり、データDA1が無効データとなる。このようにデータの上書きにより無効クラスタが生じ、有効クラスタと無効クラスタとが混在する物理ブロックが増えると、記憶領域を有効に活用するために、このような物理ブロックを含む論理ブロックに対してガベージコレクション処理が行われる。
【0030】
図4は、ガベージコレクション処理の一例を示すフローチャートである。
コントローラ22(リード制御部42、ライト制御部44、GC制御部46を含む)は、ブロック102で、ガベージコレクションの開始タイミングになったか否かを判定する。コントローラ22は、ホスト10からガベージコレクション命令を受信したか否かに基づいてガベージコレクションの開始タイミングになったか否かを判定することができる。また、コントローラ22はブロックの状態を管理しているので、コントローラ22は、有効クラスタと無効クラスタが混在する物理ブロックが増えたことを検出することによっても、ガベージコレクションの開始タイミングになったか否かを判定できる。コントローラ22は、ガベージコレクションの開始タイミングになったことを判定するまで、ブロック102の判定を繰り返す。
【0031】
コントローラ22は、ブロック102でガベージコレクションの開始タイミングになったことを判定すると、ブロック104で、有効クラスタと無効クラスタが混在する物理ブロックを含むガベージコレクションの対象候補の論理ブロックの中の1つ(GC元論理ブロックと称する)の1疑似物理クラスタからデータをリードする。リードデータはリードバッファ54に格納される。
【0032】
コントローラ22は、ブロック106で、ブロック104でリードしたデータは訂正不能なリードエラーを含むか否かを判定する。リードしたデータがリードエラーを含む場合、コントローラ22は、リードエラーを訂正する。しかし、エラーの種類や程度によっては、コントローラ22が訂正できないエラーもある。リードエラーを生じ、しかもそのエラーが訂正不能なデータを格納するクラスタは、有効クラスタであるか無効クラスタであるかの判定ができないので、当該疑似物理クラスタのデータはGC先論理ブロックに移動できない。
【0033】
コントローラ22は、リードしたデータは訂正不能なリードエラーを含むとブロック106で判定した場合、ブロック108で、当該疑似物理クラスタを論理不明クラスタとして管理する。
コントローラ22は、リードしたデータは訂正不能なリードエラーを含まないとブロック106で判定した場合、ブロック110で、疑似物理クラスタは有効クラスタであるか否か判定する。この判定は、上述したように、疑似物理クラスタの冗長部の論理クラスタアドレスがLUT56の何処を指しているかに基づいて行われる。
【0034】
コントローラ22は、ブロック110で疑似物理クラスタは有効クラスタであると判定すると、ブロック112で、リードバッファ54に格納されている有効クラスタからリードしたデータをGC先論理ブロックの疑似物理クラスタにライトする。GC先論理ブロックは全データが消去されている論理ブロック(フリーブロックとも称する)の中から選ばれる。ブロック112でデータのGC先論理ブロックへのライトが完了すると、LUT56内のGC元論理ブロック内の疑似物理クラスタアドレスがGC先論理ブロック内の疑似物理クラスタアドレスに変更され、LUT56が更新される。
【0035】
コントローラ22は、ブロック108又はブロック112の処理を実行後、又はブロック110で疑似物理クラスタは無効クラスタであると判定すると、ブロック114で、GC元論理ブロックの中の全ての疑似物理クラスタからデータをリードしたか否かを判定する。コントローラ22は、ブロック114でGC元論理ブロックの中の全ての疑似物理クラスタからデータをリードしていないと判定すると、ブロック104を再度実行する。すなわち、コントローラ22は、GC元論理ブロックの中の他の疑似物理クラスタからデータをリードし、同様の処理を繰り返す。
【0036】
コントローラ22は、ブロック114でGC元論理ブロックの中の全ての疑似物理クラスタからデータをリードしたと判定すると、ブロック116で、GC元論理ブロックは論理不明クラスタを含むか否かを判定する。GC元論理ブロックが論理不明クラスタを含まない場合、GC元論理ブロック内の有効クラスタの全てのデータはGC先論理ブロックに移動されていて、GC元論理ブロックは消去可能であると判断できる。GC元論理ブロックが論理不明クラスタを含む場合、有効クラスタの全てのデータがGC先論理ブロックに移動されているか不明であり、GC元論理ブロックは消去不可能であると判断できる。そのため、コントローラ22は、ブロック116でGC元論理ブロックは論理不明クラスタを含まないと判定すると、ブロック118で、GC元論理ブロックの全ての物理ブロックのデータを消去する。コントローラ22は、ブロック122で、ブロック118で全データが消去されたGC元論理ブロックをGC先論理ブロックの候補とし、処理を終了する。
【0037】
コントローラ22は、ブロック116でGC元論理ブロックは論理不明クラスタを含むと判定すると、ブロック124で、新論理ブロックを作成し、GC元論理ブロックに割り当てられていた全ての物理ブロックのデータを消去し、データ消去後の物理ブロックを新論理ブロックに割り当てる。
【0038】
コントローラ22は、ブロック126で、GC元論理ブロックを物理ブロックが割り当てられない論理不明ブロックとする。例えば、コントローラ22は、GC元論理ブロックに割り当てられていた全ての物理ブロックを、存在し得ない物理ブロックとする。論理ブロックテーブル58が論理ブロックに割り当てられる物理ブロックの物理アドレスを示す場合、物理アドレスとして使われないアドレスが論理ブロックテーブル58内のGC元論理ブロックに割り当てられる物理ブロック欄にライトされる。これにより、ホスト10が論理不明クラスタ内のデータをリードしようとした場合、論理不明クラスタアドレスに対応する疑似物理クラスタアドレスが存在しないので、データはリードできず、リードエラーがホスト10に返される。
【0039】
コントローラ22は、ブロック128で、新論理ブロックをGC先論理ブロックの候補とし、処理を終了する。なお、ブロック126とブロック128の実行順番は
図4の逆でも良い。
なお、
図4は、ブロック128の後、処理が終了する例を示したが、ブロック102の判定処理を定期的に実行し、ガベージコレクションの開始タイミングになると、
図4の処理が割り込みとして実行されても良い。
【0040】
図5を参照して、新論理ブロックの作成を説明する。
図5は、論理ブロックアドレスと物理ブロックアドレスとの割り当て関係を示す論理ブロックテーブル58の状態変化の一例を示す。
図5(a)は、ブロック124を実行する以前、例えばブロック116の実行中の論理ブロックテーブル58を示す。
図5(b)は、ブロック124の処理が完了した時の論理ブロックテーブル58を示す。
図5(c)は、ブロック126の処理が完了した時の論理ブロックテーブル58を示す。(m+1)個の論理ブロック(論理ブロックアドレスLB0~LBmの論理ブロック)が作成されているとする。論理ブロックアドレスLB0で示される論理ブロックには物理ブロックアドレスPB0、PB1、…等で指定される物理ブロックが割り当てられ、論理ブロックアドレスLBmで示される論理ブロックには物理ブロックアドレスPBi、PBi+1、…等で指定される物理ブロックが割り当てられている。
図5では、論理ブロックには連続する物理ブロックアドレスの物理ブロックが割り当てられているが、これはあくまでも一例であり、任意の離散的な物理ブロックアドレスの物理ブロックが論理ブロックに割り当てられていても良い。論理ブロックアドレスLBmの論理ブロックが論理不明クラスタを含むGC元論理ブロック(論理不明ブロック)であるとする。ブロック124で作成された新論理ブロックの論理ブロックアドレスは、
図5(b)に示すように、LBm+1であるとする。
【0041】
コントローラ22は、ブロック126で、
図5(c)に示すように、論理ブロックテーブル58内の論理ブロックアドレスLBmで指定されるGC元論理ブロックに対応する全ての物理ブロックの物理ブロックアドレスを、アドレスとして存在しえない値Nullとする。これにより、GC元論理ブロックは不明物理ブロックとされる。Nullの例は、16ビットアドレスの場合、“FF”等がある。これにより、ホスト10が論理不明クラスタ内のデータをリードしようとした場合、論理不明クラスタに対応する疑似物理クラスタのデータはリードできず、リードエラーがホスト10に返される。
【0042】
ブロック124のタイミングでは、論理ブロックアドレスLBmのGC元論理ブロック内の有効クラスタのデータは全てGC先論理ブロックに移動されており、GC元論理ブロックに残っているデータは論理不明クラスタのデータのみであり、GC元論理ブロック内のデータはホスト10により今後リードされることがないデータ、あるいはホスト10に返送されないデータである。すなわち、GC元論理ブロックに割り当てられていた物理ブロックは今後使われないので消去可能な物理ブロックである。このため、ブロック124で、論理ブロックアドレスLBmで指定されるCG元論理ブロックに割り当てられていた物理ブロックアドレスPBi、PBi+1、…等で指定される物理ブロックのデータが消去され、データ消去後の物理ブロックが新論理ブロックに割り当てられ、消去済みの新論理ブロックがGC先論理ブロックとして使用され得る。
【0043】
これにより、論理不明クラスタが存在しても、ガベージコレクション処理に必要な消去済みのGC先論理ブロックを確保でき、ガベージコレクション処理が実行不能となる状態を回避できる。
以下、具体的な状況毎のガベージコレクションの動作例を説明する。
【0044】
図6、
図7は、GC先論理ブロックが順次生成され、ガベージコレクションが実行され続ける場合の例を示す。論理ブロックBL0、BL1、BL2、BL4、…がプログラム済みであり、論理ブロックBL3が消去済みである。プログラム済みとは、新たなデータをライトする余地がない程度までデータがライトされている状態である。消去済み論理ブロックBL3はGC先論理ブロックとなり得る。
【0045】
プログラム済みの論理ブロックBL0、BL1、BL2、BL4、…では有効クラスタと無効クラスタが混在し、これらの論理ブロックBL0、BL1、BL2、BL4、…はGC元論理ブロックの候補であるとする。先ず、
図6(a)に示すように、GC元論理ブロックの候補の中の1つ、例えば論理ブロックBL0がGC元論理ブロックとされ、GC元論理ブロックBL0から疑似物理クラスタ単位でデータがリードされ、疑似物理クラスタが有効クラスタである場合、リードデータがGC先論理ブロックBL3に移動される。GC先論理ブロックBL3の状態は消去済みからプログラム中に変化する。
【0046】
GC元論理ブロックBL0の全ての有効クラスタからリードしたデータがGC先論理ブロックBL3に移動されると、
図6(b)に示すように、GC元論理ブロックBL0の全てのデータが消去される。消去済み論理ブロックBL0はGC先論理ブロックとなり得る。
【0047】
次に、
図6(c)に示すように、GC元論理ブロックの候補の中の別の1つ、例えば論理ブロックBL1がGC元論理ブロックとされ、GC元論理ブロックBL1から疑似物理クラスタ単位でデータがリードされ、疑似物理クラスタが有効クラスタである場合、リードデータがGC先論理ブロックBL3に移動される。
【0048】
GC先論理ブロックBL3に移動(ライト)されるデータの量が増えると、
図7(a)に示すように、GC先論理ブロックBL3の状態がプログラム済みになり、これ以上GC元論理ブロックBL1からGC先論理ブロックBL3にデータを移動することができなくなる。
【0049】
しかし、GC先論理ブロックとなり得る消去済み論理ブロックBL0が存在しているので、この後は、
図7(b)に示すように、GC元論理ブロックBL1の有効クラスタからリードしたデータがGC先論理ブロックBL0に移動され、ガベージコレクションが続行される。
【0050】
GC元論理ブロックBL1の全ての有効クラスタからデータがリードされ、GC先論理ブロックBL0にデータが移動されると、
図7(c)に示すように、GC元論理ブロックBL1の全てのデータが消去される。消去済み論理ブロックBL1はGC先論理ブロックとなり得る。このように、消去済み論理ブロックが新規に生成される限り、ガベージコレクションが継続される。
【0051】
次に、
図8、
図9を参照して、ガベージコレクションの実行が継続できなくなる場合の例を示す。
図6(a)の場合と同様に、
図8(a)に示すように、GC元論理ブロックBL0の有効クラスタからリードしたデータがGC先論理ブロックBL3に移動され、ガベージコレクションが実行される。
【0052】
図8(b)に示すように、ガベージコレクションの途中でGC元論理ブロックBL0の疑似物理クラスタからリードしたデータがリードエラーを含み、かつリードエラーが訂正不能である場合、当該クラスタが有効クラスタか無効クラスタかを判定できず、当該クラスタからリードしたデータをGC先論理ブロックBL3に移動することができない。
【0053】
GC元論理ブロックBL0の全ての有効クラスタからリードしたデータがGC先論理ブロックBL3に移動されると、
図8(c)に示すように、論理ブロックBL1がGC元論理ブロックとされ、GC元論理ブロックBL1の有効クラスタからリードしたデータがGC先論理ブロックBL3に移動される。
【0054】
GC先論理ブロックBL3にライトされるデータの量が増えると、
図9(a)に示すように、GC先論理ブロックBL3の状態がプログラム済みになり、これ以上GC元論理ブロックBL1からGC先論理ブロックBL3にデータを移動することができなくなる。
【0055】
図6、
図7に示した例では、この段階(
図7(a))で消去済み論理ブロックBL0が存在していたので、GC元論理ブロックBL1についてのガベージコレクションが続行可能であった。しかし、
図9(a)に示すように、GC先論理ブロックBL3の状態がプログラム済みになった時、消去済み論理ブロックが1つも存在していないので、
図9(b)に示すように、GC元論理ブロックBL1の有効クラスタからリードしたデータの移動先のGC先論理ブロックが無く、これ以上ガベージコレクションを続行することが不可能である。
【0056】
なお、
図8(b)に示す訂正不能なリードエラーが発生してから、
図9(a)に示すGC先論理ブロックBL3の状態がプログラム済みになり、かつ消去済み論理ブロックが1つも存在していない状態となるまでの期間に、LUT56の全ての論理アドレスと物理アドレスとの対応関係を調べれば、訂正不能なリードエラーが生じたデータを格納する疑似物理クラスタが有効クラスタであるか無効クラスタであるかを判定できる。しかし、LUT56のサイズが大きいと、この期間内にLUT56の全ての論理アドレスと物理アドレスとの対応関係を調べることは不可能である。
【0057】
このような状況を避けるため、GC先論理ブロックとなり得る多数の消去済み論理ブロックを予め準備しておくことが考えられる。
図10、
図11は、消去済み論理ブロックを予め準備しておく場合のガベージコレクションの例を示す。論理ブロックBL0、BL1、BL2、BL4、…がプログラム済みであり、論理ブロックBL3、eBL0、eBL1、…が消去済みである。消去済み論理ブロックeBL0、eBL1、…はCG先論理ブロックとしてのみ使用され、ユーザデータの記憶には使用されない。消去済み論理ブロックeBL0、eBL1、…は一度もユーザデータが記憶されていない論理ブロックでも良いし、ユーザデータが記憶されていたが、ガベージコレクションにより全てのデータが消去され、今後はユーザデータの記憶には使用されない論理ブロックでも良い。
【0058】
図10(a)に示すように、GC元論理ブロックBL0の有効クラスタからリードしたデータがGC先論理ブロックBL3に移動される。GC先論理ブロックBL3の状態は消去済みからプログラム中に変化する。
図10(b)に示すように、ガベージコレクションの途中でGC元論理ブロックBL0の疑似物理クラスタからリードしたデータが訂正不能である場合、リードデータをGC先論理ブロックBL3に移動することができない。
【0059】
GC元論理ブロックBL0の全ての有効クラスタからリードしたデータがGC先論理ブロックBL3に移動されると、
図10(c)に示すように、論理ブロックBL1がGC元論理ブロックとされ、GC元論理ブロックBL1の有効クラスタからリードしたデータがGC先論理ブロックBL3に移動される。
【0060】
GC先論理ブロックBL3にライトされるデータの量が増えると、
図11(a)に示すように、GC先論理ブロックBL3の状態がプログラム済みになり、これ以上GC元論理ブロックBL1からGC先論理ブロックBL3にデータを移動することができなくなる。
【0061】
図8、
図9に示した例では、
図9(a)、(b)に示すように、GC先論理ブロックBL3の状態がプログラム済みになった時、消去済み論理ブロックが1つも存在していないので、ガベージコレクションは続行不可能であった。しかし、
図10、
図11に示す例では、GC先論理ブロックとして使用可能な消去済み論理ブロックeBL0、eBL1、…が予め準備されているので、論理不明ブロックが生じても、ガベージコレクションは続行可能である。すなわち、
図11(a)に示すように、GC先論理ブロックBL3の状態がプログラム中からプログラム済みに変化した場合、
図11(b)に示すように、消去済み論理ブロックeBL0がGC先論理ブロックとされ、GC元論理ブロックBL1の有効クラスタからリードしたデータがGC先論理ブロックeBL0に移動され、ガベージコレクションが続行される。
【0062】
GC元論理ブロックBL1の全ての有効クラスタからデータがリードされ、GC先論理ブロックeBL0にデータが移動されると、
図11(c)に示すように、GC元論理ブロックBL1の全てのデータが消去される。消去済み論理ブロックBL1はGC先論理ブロックとなり得る。
【0063】
このように、消去済み論理ブロックを予め用意しておくことにより、論理不明ブロックが生じても、GC先論理ブロックが枯渇する可能性は小さくなる。しかし、予め準備する消去済み論理ブロックのためにフラッシュメモリの記憶コストが高くなるデメリットもある。
図10、
図11の例では、LUT56の全ての論理アドレスと物理アドレスとの対応関係を調べ、論理不明ブロックが有効クラスタであるか無効クラスタであるかを判定するための期間は、
図10(b)に示す訂正不能リードエラーが発生してから消去済み論理ブロックが1つも無くなるまでの期間である。このため、
図8、
図9に示す場合に比べて長時間であり、LUT56を調べて論理不明ブロックが有効クラスタであるか無効クラスタであるかを判定するための時間的余裕がある、
図12、
図13は、消去済み論理ブロックを予め用意することなく、GC先論理ブロックの枯渇を防ぐことができるガベージコレクションの動作を示す。
図12(a)に示すように、GC元論理ブロックBL0の有効クラスタからリードしたデータがGC先論理ブロックBL3に移動される。
【0064】
図12(b)に示すように、ガベージコレクションの途中でGC元論理ブロックBL0からリードしたデータが訂正不能である場合、当該クラスタが有効クラスタか無効クラスタかを判定できず、当該クラスタからリードしたデータをGC先論理ブロックBL3に移動することができない。
【0065】
GC元論理ブロックBL0の全ての有効クラスタからリードしたデータがGC先論理ブロックBL3に移動されると、
図12(c)に示すように、新論理ブロックnBL0が生成される。新論理ブロックnBL0に割り当てられる物理ブロックはGC元論理ブロックBL0に割り当てられていた物理ブロックであり、そのデータは消去されている。とともに、GC元論理ブロックBL0が物理ブロックが割り当てられない論理不明ブロックに変更される。さらに、
図12(c)に示すように、論理ブロックBL1がGC元論理ブロックとされ、GC元論理ブロックBL1の有効クラスタからリードしたデータがGC先論理ブロックBL3にデータが移動される。
【0066】
GC先論理ブロックBL3にライトされるデータが増えると、
図13(a)に示すように、GC先論理ブロックBL3の状態がプログラム済みになり、GC元論理ブロックBL1からGC先論理ブロックBL3にデータを移動することができなくなる。しかし、消去済み論理ブロックnBL0が存在するので、論理不明クラスタを含む論理不明ブロックが生じても、GC先論理ブロックnBL0が確保でき、
図13(b)に示すように、GC元論理ブロックBL1の有効クラスタからリードしたデータがGC先論理ブロックnBL0に移動される。
【0067】
GC元論理ブロックBL1のデータリード中に訂正不能なリードエラーが生じず、GC元論理ブロックBL1の有効クラスタの全てのデータがGC先論理ブロックnBL0に移動されると、
図13(c)に示すように、GC元論理ブロックBL1の全てのデータが消去され、消去済み論理ブロックBL1はGC先論理ブロックとなり得る。
【0068】
図12、
図13の動作によれば、ガベージコレクションにおいてGC元論理ブロックの疑似物理クラスタからデータがリードされる際、リードエラーが発生し、リードエラーが訂正不能な場合、GC元論理ブロックの有効クラスタからGC先論理ブロックにデータが移動された後、新論理ブロックを作成する。GC元論理ブロックに割り当てられていた物理ブロックのデータを消去してから、消去済み物理ブロックを新論理ブロックに割り当てる。これにより、消去済みのGC先論理ブロックを確保することができる。GC元論理ブロックは、物理ブロックが割り当てられない論理不明ブロックとされる。GC元論理ブロックの有効クラスタのデータはGC先論理ブロックに移動されるので、以後、このデータに関するリードコマンドがホスト10からコントローラ22に送信されると、LUT56はGC先論理ブロック内の疑似物理クラスタ又は物理ブロックを指すので、GC先論理ブロック内の疑似物理クラスタ又は物理ブロックからデータがリードされる。GC元論理ブロックの無効クラスタ及び論理不明クラスタのデータはGC元論理ブロックに残るが、GC元論理ブロックにはもはや物理ブロックが割り当てられていないので、以後、無効クラスタ及び論理不明クラスタのデータに関するリードコマンドがホスト10からコントローラ22に送信されると、データがリードされず、ホスト10にリードエラーが返送される。コントローラ22内では、LUT56が存在しない疑似物理クラスタを指す物理的なリードエラーと、データが訂正不能なエラーを含むリードエラーが区別されているが、コントローラ22がホスト10に返送するリードエラーにおいて上記2つのエラーの区別は無い。論理不明クラスタに関するリードリクエストに対してリードエラーが返送されるのは、新論理ブロックを作成しない場合でも、同様である。このため、訂正不能なリードエラーが生じた場合、ホスト10から見たSSD20の動作は、新論理ブロックを作成しない場合でも新論理ブロックを作成する場合も変わらない。
図12、
図13の動作によれば、論理不明クラスタを含むGC元論理ブロックのデータが消去できない状況に対応するために、GC先論理ブロックとして使用され得る消去済み論理ブロックを設ける必要がない。1論理ブロックサイズが大きくなると、論理ブロック数が減るので、GC先論理ブロックが枯渇し易い。しかし、
図12、
図13に示すように、論理不明ブロックが生じると、新論理ブロックが作成されるので、CG先論理ブロックが枯渇しにくい。
【0069】
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除しても良い。更に、異なる実施形態に亘る構成要素を適宜組み合せても良い。
【符号の説明】
【0070】
10…ホスト、20…SSD、22…コントローラ、24…NAND型フラッシュメモリ、26…RAM、42…リード制御部、44…ライト制御部、46…GC制御部、56…LUT、58…論理ブロックテーブル。