JP2020017134A - 記憶装置及び記憶制御方法 - Google Patents

記憶装置及び記憶制御方法 Download PDF

Info

Publication number
JP2020017134A
JP2020017134A JP2018140503A JP2018140503A JP2020017134A JP 2020017134 A JP2020017134 A JP 2020017134A JP 2018140503 A JP2018140503 A JP 2018140503A JP 2018140503 A JP2018140503 A JP 2018140503A JP 2020017134 A JP2020017134 A JP 2020017134A
Authority
JP
Japan
Prior art keywords
cluster
logical block
physical
block
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2018140503A
Other languages
English (en)
Other versions
JP7042716B2 (ja
Inventor
哲也 安田
Tetsuya Yasuda
哲也 安田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Kioxia Corp
Original Assignee
Kioxia Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Kioxia Corp filed Critical Kioxia Corp
Priority to JP2018140503A priority Critical patent/JP7042716B2/ja
Priority to US16/284,253 priority patent/US10754771B2/en
Publication of JP2020017134A publication Critical patent/JP2020017134A/ja
Priority to US16/935,001 priority patent/US11366751B2/en
Application granted granted Critical
Publication of JP7042716B2 publication Critical patent/JP7042716B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7205Cleaning, compaction, garbage collection, erase control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7208Multiple device management, e.g. distributing data over multiple flash devices

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Detection And Correction Of Errors (AREA)
  • Memory System (AREA)

Abstract

【課題】 訂正不能なリードエラーが生じてもGC元論理ブロックを確保でき、ガベージコレクションを実行することができる記憶装置及び記憶制御方法を提供すること。【解決手段】 実施形態によれば、記憶装置は、不揮発性メモリと、外部装置により指定される論理アドレスと不揮発性メモリの物理アドレスとの関係を記憶する第1テーブルと、論理ブロックと複数の物理ブロックとの関係を記憶する第2テーブルと、ガベージコレクションにより第1テーブルを更新するコントローラと、を具備する。コントローラは、GC元論理ブロックのクラスタからリードしたデータが訂正不能な場合、新論理ブロックを作成し、GC元論理ブロックに割り当てられていた複数の物理ブロックの全てのデータを消去し、データが消去された複数の物理ブロックを新論理ブロックに割り当て、GC元論理ブロックに実質的に物理ブロックが割り当てられないように第2テーブルを更新する。【選択図】 図4

Description

本発明の実施形態は記憶装置及び記憶制御方法に関する。
フラッシュメモリ等の不揮発性半導体メモリを備え、ハードディスクドライブ(HDD)と同様のインタフェースを持つソリッドステートドライブ(SSD)と呼ばれる記憶装置では、データ消去の単位とデータリード/ライトの単位とが異なる。一例として、データ消去の単位は物理ブロックであり、データリード/ライトの単位はそれより小さいクラスタである。1物理ブロックは多数のワード線を含み、1ワード線は多数のページを含み、1ページは複数のクラスタを含む。
SSDでは、データの書き換えが進むと、物理ブロック内で有効クラスタと無効クラスタが混在する可能性が高くなる。有効クラスタは、その物理アドレスが、論理アドレス/物理アドレス変換テーブルにより指定されているクラスタであり、無効クラスタは、その物理アドレスが論理アドレス/物理アドレス変換テーブルにより指定されていないクラスタである。このような物理ブロックが増えると、記憶領域が有効に活用できない。
記憶領域を有効に活用するために、コンパクション又はガベージコレクション(以下、ガベージコレクション又はGCと称する)と呼ばれる処理が行われる。ガベージコレクションでは、データが消去されているフリーブロックの個数を増やすため、有効クラスタと無効クラスタが混在する物理ブロックを含む論理ブロック(GC元論理ブロックと称する)内の全ての有効クラスタのデータが消去済み論理ブロック(GC先論理ブロックと称する)に移動される。全ての有効クラスタのデータがGC先論理ブロックに移動されたGC元論理ブロックの全てのデータは消去される。消去済みのGC元論理ブロックはフリーブロックとして解放され、GC先論理ブロックとして再利用することが可能となる。
GC元論理ブロック内のクラスタのデータをリードする際、リードデータにエラーが生じ、かつそのエラーが訂正不能な場合がある。この場合、データがリードされたクラスタは有効クラスタであるか無効クラスタであるか判断できない。そのため、あるクラスタのデータにリードエラーが生じ、かつそのエラーが訂正不能な場合、ガベージコレクションを実行できず、GC元論理ブロックのデータを消去することができず、GC元論理ブロックをGC先論理ブロックとして再利用することができない。
特開2013-200722号公報 特開2013-174975号公報 米国特許第8825946号明細書 特許第6313242号公報 米国特許出願公開第2013/0124842号明細書
従来の記憶装置では、GC元論理ブロックのクラスタのデータをリードする際、リードエラーが生じ、かつそのエラーが訂正不能な場合、GC先論理ブロックが枯渇し、ガベージコレクションを実行できなくなる恐れがある。
本発明の目的は、訂正不能なリードエラーが生じてもGC元論理ブロックを確保することができ、ガベージコレクションを実行することができる記憶装置及び記憶制御方法を提供することである。
実施形態によれば、記憶装置は、
複数の物理ブロックを有し、各物理ブロックは複数のクラスタを有し、物理ブロック単位でデータが消去され、クラスタ単位でデータがリード又はライトされる不揮発性メモリと、
外部装置により指定される論理アドレスと、前記論理アドレスに対応する前記不揮発性メモリの物理アドレスとの関係を記憶する第1テーブルと、
前記不揮発性メモリの複数の物理ブロックが割り当てられる論理ブロックと、前記複数の物理ブロックとの関係を記憶する第2テーブルと、
ガベージコレクション元論理ブロックの全ての有効クラスタからリードしたデータをガベージコレクション先論理ブロックに移動し、前記ガベージコレクション元論理ブロックの全てのデータを消去し、前記第1テーブルを更新するコントローラと、を具備する。
前記コントローラは、前記ガベージコレクション元論理ブロックのクラスタからリードしたデータが訂正不能な場合、新論理ブロックを作成し、前記ガベージコレクション元論理ブロックに割り当てられていた複数の物理ブロックの全てのデータを消去し、データが消去された前記複数の物理ブロックを前記新論理ブロックに割り当て、前記ガベージコレクション元論理ブロックに実質的に物理ブロックが割り当てられないように前記第2テーブルを更新する。
実施形態による記憶装置の一例の構成を示すブロック図である。 物理ブロック、論理ブロック及び疑似物理クラスタの関係を説明する図である。 LUT56の一例を示す図である。 ガベージコレクション処理の一例を示すフローチャートである。 論理ブロックテーブル58の状態変化の一例を示す図である。 ガベージコレクションの一例を説明する図である。 ガベージコレクションの一例を説明する図である。 GC先論理ブロックが枯渇する場合のガベージコレクションの一例を説明する図である。 GC先論理ブロックが枯渇する場合のガベージコレクションの一例を説明する図である。 GC先論理ブロックの枯渇を回避するガベージコレクションの一例を説明する図である。 GC先論理ブロックの枯渇を回避するガベージコレクションの一例を説明する図である。 GC先論理ブロックの枯渇を回避するガベージコレクションの他の例を説明する図である。 GC先論理ブロックの枯渇を回避するガベージコレクションの他の例を説明する図である。
以下、実施の形態について図面を参照して説明する。なお、開示はあくまで一例にすぎず、以下の実施形態に記載した内容により発明が限定されるものではない。当業者が容易に想到し得る変形は、当然に開示の範囲に含まれる。説明をより明確にするため、図面において、各部分のサイズ、形状等を実際の実施態様に対して変更して模式的に表す場合もある。複数の図面において、対応する要素には同じ参照数字を付して、詳細な説明を省略する場合もある。
図1は実施形態に係るSSD20の一例の構成を示すブロック図である。SSD20は、不揮発性半導体メモリにデータをライトするとともに、不揮発性半導体メモリからデータをリードするように構成された半導体ストレージデバイスである。SSD20は、ホスト10に接続される。ホスト10は、SSD20にアクセスし、SSD20にデータをライトするとともに、SSD20からデータをリードする。ホスト10は、大量且つ多様なデータをSSD20に保存するサーバ(ストレージサーバとも称する)であっても良いし、パーソナルコンピュータであっても良い。SSD20は、ホスト10のメインストレージとして使用され得る。SSD20は、ホスト10に内蔵されても良いし、ホスト10にケーブルまたはネットワークを介して接続されても良い。
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等のような回路によって構成しても良い。
ホスト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コマンドには、ライトコマンド、リードコマンド等が含まれ得る。
不揮発性半導体メモリとしてのフラッシュメモリ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型フラッシュメモリであっても良い。
各チップは、複数の不揮発性のメモリセルを含む複数の物理ブロックを備える。フラッシュメモリ24では、物理ブロック単位でデータが一括して消去される。すなわち、物理ブロックは、データ消去単位の領域である。データリード/データライトは、クラスタ単位で行われる。クラスタに対応する論理アドレス空間上の概念として論理アドレス(LBA)範囲がある。1クラスタは1つの論理アドレス範囲に関連づけられたデータ、又は1つの論理アドレス範囲の一部分に関連づけられたデータを含む。フラッシュメモリ24のリード、ライトはコントローラ22により制御される。フラッシュメモリ24はNAND I/F36に接続される。
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と称する))フラッシュメモリと称される。
RAM26は、揮発性メモリであるDRAM又はSRAM等からなり、コントローラ22の外部に設けるのではなく、コントローラ22に内蔵されていても良い。RAM26には、フラッシュメモリ24にライトされるデータを一時的に格納するためのバッファ領域であるライトバッファ52と、フラッシュメモリ24からリードしたデータを一時的に格納するためのバッファ領域であるリードバッファ54と、アドレス変換テーブル(論理アドレス/物理アドレス変換テーブルとも称する)として機能するルックアップテーブル(LUTと称する)56と、論理ブロックと物理ブロックとの割り当て関係を示す論理ブロックテーブル58を備える。LUT56は、論理クラスタアドレスと疑似物理クラスタアドレスの間のマッピングを管理する。RAM26はRAM I/F38に接続される。
コントローラ22は、フラッシュメモリ24のデータ管理およびブロック管理を実行するように構成されたフラッシュトランスレーション層(FTL)として機能しても良い。このFTLによって実行されるデータ管理には、(1)SSD20の論理アドレス(論理クラスタアドレス)とフラッシュメモリ24の物理アドレス(疑似物理クラスタアドレス)との間の対応関係を示すマッピング情報の管理、(2)クラスタ単位のリード/ライトとブロック単位の消去動作とを隠蔽するための処理、等が含まれる。論理アドレスは、SSD20をアドレス指定するためにホスト10によって指定されるアドレスである。
論理アドレスと物理アドレスとの間のマッピングの管理は、LUT56を用いて実行される。コントローラ22は、LUT56を使用して、論理アドレスと物理アドレスとの間のマッピングをクラスタサイズ単位で管理する。ある論理アドレスに対応する物理アドレスは、この論理アドレスで指定されるデータがライトされたフラッシュメモリ24内の物理記憶位置を示す。LUT56は、SSD20の電源オン時にフラッシュメモリ24からRAM26にロードされても良い。
CPU34は、リード制御部42、ライト制御部44、ガベージコレクション(GCと称する)制御部46等として機能することができる。なお、リード制御部42、ライト制御部44、GC制御部46の一部または全部も、コントローラ22内の専用ハードウェアによって実現しても良い。ライト制御部44は、ライトデータを誤り訂正符号化し、符号化データをフラッシュメモリ24にライトする。リード制御部42は、フラッシュメモリ24からリードしたデータに誤り訂正復号し、リードデータの誤りを訂正する。誤り訂正符号化及び誤り訂正復号はコントローラ22内の専用ハードウェアによって実現しても良い。GC制御部46は適宜なタイミングでガベージコレクションを実行する。
ライト制御部44は、ある論理アドレスに対応する更新データを、この論理アドレスに対応する物理アドレスで指定されるクラスタではなく、別のクラスタにライトする。そして、ライト制御部44は、LUT56を更新して、この論理アドレスをこの別のクラスタを指定する物理アドレスに関連付ける。これにより、以前のデータはリードされることがなく、以前のデータを格納しているクラスタは無効化される。
ブロック管理には、バッドブロックの管理、ウェアレベリング、ガベージコレクション、等が含まれる。
CPU34は、ホストI/F32、NAND I/F36、RAM I/F38を制御するように構成されたプロセッサである。CPU34は、図示しないROM等に格納されている制御プログラム(ファームウェア)を実行することによって様々な処理を行う。このCPU34は、上述のFTL処理に加え、ホスト10からの様々なコマンドを処理するためのコマンド処理等を実行することができる。CPU34の動作は、CPU34によって実行される上述のファームウェアによって制御される。なお、FTL処理およびコマンド処理の一部または全部は、コントローラ22内の専用ハードウェアによって実行しても良い。
図2は、物理ブロック、論理ブロック及び疑似物理クラスタの関係を説明する図である。上述したように、NANDチップは複数の物理ブロックを含み、複数の物理ブロックが1つの論理ブロックに割り当てられる。1論理ブロックに割り当てられる複数の物理ブロックは単一のチップに含まれる複数の物理ブロックでも良いし、異なるチップに含まれる複数の物理ブロックでも良い。1論理ブロックに割り当てられる物理ブロックの数は、論理ブロックに関わらず一定でも良いし、論理ブロックによって異なっても良い。1つの論理ブロックには複数の疑似物理クラスタが割り当てられる。1疑似物理クラスタに格納される情報はユーザデータ(例えば、4KiB)と冗長部(例えば、12バイト)からなる。冗長部は論理クラスタアドレスとその他の情報を含む。
疑似物理クラスタアドレスは、疑似物理クラスタがどの論理ブロックに含まれるかを示す情報と、疑似物理クラスタが論理ブロック内の先頭の疑似物理クラスタから何番目の疑似物理クラスタであるか、すなわち疑似物理クラスタの論理ブロック内の相対的な位置を示す情報とからなる。ホスト10は疑似物理アドレスにアクセスする際、論理クラスタアドレスを指定する。論理アドレスに対応する物理アドレス、即ち論理クラスタアドレスと疑似物理クラスタアドレスとのマッピングを示す情報がLUT56に格納される。
図3は、LUT56の一例を示す。LUT56は疑似物理クラスタアドレスを記憶し、疑似物理クラスタアドレスのインデックスが論理クラスタアドレスに対応する。論理クラスタアドレスはインデックス×クラスタサイズ(4KiB)で表される。なお、4KiBは論理クラスタサイズであり、物理クラスタサイズは4KiB+12Bytesである。ホスト10から与えられた論理クラスタアドレスをクラスタサイズで除することにより、インデックスが求められると、論理クラスタアドレスに対応する疑似物理クラスタアドレスが求められる。
例えば、インデックス3の疑似物理クラスタアドレスPC3で指定される疑似物理クラスタAに格納されている情報の中の冗長部の中の論理クラスタアドレスがインデックス3に対応する場合、疑似物理クラスタAは有効クラスタである。同様に、インデックスmの疑似物理クラスタアドレスPCmで特定される疑似物理クラスタBに格納されている情報の中の冗長部の中の論理クラスタアドレスがインデックスmに対応する場合、疑似物理クラスタBは有効クラスタである。一方、LUT56から指定されていない疑似物理クラスタCは無効クラスタである。
このように、LUT56の疑似物理クラスタアドレスを全て調べれば、疑似物理クラスタが有効クラスタであるか無効クラスタであるかを判断することができるが、以下のようにしても、疑似物理クラスタが有効クラスタであるか無効クラスタであるかを判断することができる。例えば、疑似物理クラスタDの疑似物理クラスタアドレスがPCdであり、疑似物理クラスタDの冗長部の論理クラスタアドレスがLCdであり、LUT56内で論理クラスタアドレスLCdに対応する疑似物理クラスタアドレスがPCeであるとする。疑似物理クラスタアドレスPCd、PCeが等しい場合、疑似物理クラスタDは有効クラスタであり、疑似物理クラスタアドレスPCd、PCeが等しくない場合、疑似物理クラスタDは無効クラスタであると判断できる。すなわち、LUT56のある疑似物理クラスタアドレスで指定される疑似物理クラスタが格納する情報内の論理クラスタアドレスに対応する疑似物理クラスタアドレスが上記ある疑似物理クラスタと一致する場合、当該疑似物理クラスタは有効クラスタであり、一致しない場合、当該疑似物理クラスタは無効クラスタである。
例えば、ホスト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が無効データとなる。このようにデータの上書きにより無効クラスタが生じ、有効クラスタと無効クラスタとが混在する物理ブロックが増えると、記憶領域を有効に活用するために、このような物理ブロックを含む論理ブロックに対してガベージコレクション処理が行われる。
図4は、ガベージコレクション処理の一例を示すフローチャートである。
コントローラ22(リード制御部42、ライト制御部44、GC制御部46を含む)は、ブロック102で、ガベージコレクションの開始タイミングになったか否かを判定する。コントローラ22は、ホスト10からガベージコレクション命令を受信したか否かに基づいてガベージコレクションの開始タイミングになったか否かを判定することができる。また、コントローラ22はブロックの状態を管理しているので、コントローラ22は、有効クラスタと無効クラスタが混在する物理ブロックが増えたことを検出することによっても、ガベージコレクションの開始タイミングになったか否かを判定できる。コントローラ22は、ガベージコレクションの開始タイミングになったことを判定するまで、ブロック102の判定を繰り返す。
コントローラ22は、ブロック102でガベージコレクションの開始タイミングになったことを判定すると、ブロック104で、有効クラスタと無効クラスタが混在する物理ブロックを含むガベージコレクションの対象候補の論理ブロックの中の1つ(GC元論理ブロックと称する)の1疑似物理クラスタからデータをリードする。リードデータはリードバッファ54に格納される。
コントローラ22は、ブロック106で、ブロック104でリードしたデータは訂正不能なリードエラーを含むか否かを判定する。リードしたデータがリードエラーを含む場合、コントローラ22は、リードエラーを訂正する。しかし、エラーの種類や程度によっては、コントローラ22が訂正できないエラーもある。リードエラーを生じ、しかもそのエラーが訂正不能なデータを格納するクラスタは、有効クラスタであるか無効クラスタであるかの判定ができないので、当該疑似物理クラスタのデータはGC先論理ブロックに移動できない。
コントローラ22は、リードしたデータは訂正不能なリードエラーを含むとブロック106で判定した場合、ブロック108で、当該疑似物理クラスタを論理不明クラスタとして管理する。
コントローラ22は、リードしたデータは訂正不能なリードエラーを含まないとブロック106で判定した場合、ブロック110で、疑似物理クラスタは有効クラスタであるか否か判定する。この判定は、上述したように、疑似物理クラスタの冗長部の論理クラスタアドレスがLUT56の何処を指しているかに基づいて行われる。
コントローラ22は、ブロック110で疑似物理クラスタは有効クラスタであると判定すると、ブロック112で、リードバッファ54に格納されている有効クラスタからリードしたデータをGC先論理ブロックの疑似物理クラスタにライトする。GC先論理ブロックは全データが消去されている論理ブロック(フリーブロックとも称する)の中から選ばれる。ブロック112でデータのGC先論理ブロックへのライトが完了すると、LUT56内のGC元論理ブロック内の疑似物理クラスタアドレスがGC先論理ブロック内の疑似物理クラスタアドレスに変更され、LUT56が更新される。
コントローラ22は、ブロック108又はブロック112の処理を実行後、又はブロック110で疑似物理クラスタは無効クラスタであると判定すると、ブロック114で、GC元論理ブロックの中の全ての疑似物理クラスタからデータをリードしたか否かを判定する。コントローラ22は、ブロック114でGC元論理ブロックの中の全ての疑似物理クラスタからデータをリードしていないと判定すると、ブロック104を再度実行する。すなわち、コントローラ22は、GC元論理ブロックの中の他の疑似物理クラスタからデータをリードし、同様の処理を繰り返す。
コントローラ22は、ブロック114でGC元論理ブロックの中の全ての疑似物理クラスタからデータをリードしたと判定すると、ブロック116で、GC元論理ブロックは論理不明クラスタを含むか否かを判定する。GC元論理ブロックが論理不明クラスタを含まない場合、GC元論理ブロック内の有効クラスタの全てのデータはGC先論理ブロックに移動されていて、GC元論理ブロックは消去可能であると判断できる。GC元論理ブロックが論理不明クラスタを含む場合、有効クラスタの全てのデータがGC先論理ブロックに移動されているか不明であり、GC元論理ブロックは消去不可能であると判断できる。そのため、コントローラ22は、ブロック116でGC元論理ブロックは論理不明クラスタを含まないと判定すると、ブロック118で、GC元論理ブロックの全ての物理ブロックのデータを消去する。コントローラ22は、ブロック122で、ブロック118で全データが消去されたGC元論理ブロックをGC先論理ブロックの候補とし、処理を終了する。
コントローラ22は、ブロック116でGC元論理ブロックは論理不明クラスタを含むと判定すると、ブロック124で、新論理ブロックを作成し、GC元論理ブロックに割り当てられていた全ての物理ブロックのデータを消去し、データ消去後の物理ブロックを新論理ブロックに割り当てる。
コントローラ22は、ブロック126で、GC元論理ブロックを物理ブロックが割り当てられない論理不明ブロックとする。例えば、コントローラ22は、GC元論理ブロックに割り当てられていた全ての物理ブロックを、存在し得ない物理ブロックとする。論理ブロックテーブル58が論理ブロックに割り当てられる物理ブロックの物理アドレスを示す場合、物理アドレスとして使われないアドレスが論理ブロックテーブル58内のGC元論理ブロックに割り当てられる物理ブロック欄にライトされる。これにより、ホスト10が論理不明クラスタ内のデータをリードしようとした場合、論理不明クラスタアドレスに対応する疑似物理クラスタアドレスが存在しないので、データはリードできず、リードエラーがホスト10に返される。
コントローラ22は、ブロック128で、新論理ブロックをGC先論理ブロックの候補とし、処理を終了する。なお、ブロック126とブロック128の実行順番は図4の逆でも良い。
なお、図4は、ブロック128の後、処理が終了する例を示したが、ブロック102の判定処理を定期的に実行し、ガベージコレクションの開始タイミングになると、図4の処理が割り込みとして実行されても良い。
図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であるとする。
コントローラ22は、ブロック126で、図5(c)に示すように、論理ブロックテーブル58内の論理ブロックアドレスLBmで指定されるGC元論理ブロックに対応する全ての物理ブロックの物理ブロックアドレスを、アドレスとして存在しえない値Nullとする。これにより、GC元論理ブロックは不明物理ブロックとされる。Nullの例は、16ビットアドレスの場合、“FF”等がある。これにより、ホスト10が論理不明クラスタ内のデータをリードしようとした場合、論理不明クラスタに対応する疑似物理クラスタのデータはリードできず、リードエラーがホスト10に返される。
ブロック124のタイミングでは、論理ブロックアドレスLBmのGC元論理ブロック内の有効クラスタのデータは全てGC先論理ブロックに移動されており、GC元論理ブロックに残っているデータは論理不明クラスタのデータのみであり、GC元論理ブロック内のデータはホスト10により今後リードされることがないデータ、あるいはホスト10に返送されないデータである。すなわち、GC元論理ブロックに割り当てられていた物理ブロックは今後使われないので消去可能な物理ブロックである。このため、ブロック124で、論理ブロックアドレスLBmで指定されるCG元論理ブロックに割り当てられていた物理ブロックアドレスPBi、PBi+1、…等で指定される物理ブロックのデータが消去され、データ消去後の物理ブロックが新論理ブロックに割り当てられ、消去済みの新論理ブロックがGC先論理ブロックとして使用され得る。
これにより、論理不明クラスタが存在しても、ガベージコレクション処理に必要な消去済みのGC先論理ブロックを確保でき、ガベージコレクション処理が実行不能となる状態を回避できる。
以下、具体的な状況毎のガベージコレクションの動作例を説明する。
図6、図7は、GC先論理ブロックが順次生成され、ガベージコレクションが実行され続ける場合の例を示す。論理ブロックBL0、BL1、BL2、BL4、…がプログラム済みであり、論理ブロックBL3が消去済みである。プログラム済みとは、新たなデータをライトする余地がない程度までデータがライトされている状態である。消去済み論理ブロックBL3はGC先論理ブロックとなり得る。
プログラム済みの論理ブロックBL0、BL1、BL2、BL4、…では有効クラスタと無効クラスタが混在し、これらの論理ブロックBL0、BL1、BL2、BL4、…はGC元論理ブロックの候補であるとする。先ず、図6(a)に示すように、GC元論理ブロックの候補の中の1つ、例えば論理ブロックBL0がGC元論理ブロックとされ、GC元論理ブロックBL0から疑似物理クラスタ単位でデータがリードされ、疑似物理クラスタが有効クラスタである場合、リードデータがGC先論理ブロックBL3に移動される。GC先論理ブロックBL3の状態は消去済みからプログラム中に変化する。
GC元論理ブロックBL0の全ての有効クラスタからリードしたデータがGC先論理ブロックBL3に移動されると、図6(b)に示すように、GC元論理ブロックBL0の全てのデータが消去される。消去済み論理ブロックBL0はGC先論理ブロックとなり得る。
次に、図6(c)に示すように、GC元論理ブロックの候補の中の別の1つ、例えば論理ブロックBL1がGC元論理ブロックとされ、GC元論理ブロックBL1から疑似物理クラスタ単位でデータがリードされ、疑似物理クラスタが有効クラスタである場合、リードデータがGC先論理ブロックBL3に移動される。
GC先論理ブロックBL3に移動(ライト)されるデータの量が増えると、図7(a)に示すように、GC先論理ブロックBL3の状態がプログラム済みになり、これ以上GC元論理ブロックBL1からGC先論理ブロックBL3にデータを移動することができなくなる。
しかし、GC先論理ブロックとなり得る消去済み論理ブロックBL0が存在しているので、この後は、図7(b)に示すように、GC元論理ブロックBL1の有効クラスタからリードしたデータがGC先論理ブロックBL0に移動され、ガベージコレクションが続行される。
GC元論理ブロックBL1の全ての有効クラスタからデータがリードされ、GC先論理ブロックBL0にデータが移動されると、図7(c)に示すように、GC元論理ブロックBL1の全てのデータが消去される。消去済み論理ブロックBL1はGC先論理ブロックとなり得る。このように、消去済み論理ブロックが新規に生成される限り、ガベージコレクションが継続される。
次に、図8、図9を参照して、ガベージコレクションの実行が継続できなくなる場合の例を示す。図6(a)の場合と同様に、図8(a)に示すように、GC元論理ブロックBL0の有効クラスタからリードしたデータがGC先論理ブロックBL3に移動され、ガベージコレクションが実行される。
図8(b)に示すように、ガベージコレクションの途中でGC元論理ブロックBL0の疑似物理クラスタからリードしたデータがリードエラーを含み、かつリードエラーが訂正不能である場合、当該クラスタが有効クラスタか無効クラスタかを判定できず、当該クラスタからリードしたデータをGC先論理ブロックBL3に移動することができない。
GC元論理ブロックBL0の全ての有効クラスタからリードしたデータがGC先論理ブロックBL3に移動されると、図8(c)に示すように、論理ブロックBL1がGC元論理ブロックとされ、GC元論理ブロックBL1の有効クラスタからリードしたデータがGC先論理ブロックBL3に移動される。
GC先論理ブロックBL3にライトされるデータの量が増えると、図9(a)に示すように、GC先論理ブロックBL3の状態がプログラム済みになり、これ以上GC元論理ブロックBL1からGC先論理ブロックBL3にデータを移動することができなくなる。
図6、図7に示した例では、この段階(図7(a))で消去済み論理ブロックBL0が存在していたので、GC元論理ブロックBL1についてのガベージコレクションが続行可能であった。しかし、図9(a)に示すように、GC先論理ブロックBL3の状態がプログラム済みになった時、消去済み論理ブロックが1つも存在していないので、図9(b)に示すように、GC元論理ブロックBL1の有効クラスタからリードしたデータの移動先のGC先論理ブロックが無く、これ以上ガベージコレクションを続行することが不可能である。
なお、図8(b)に示す訂正不能なリードエラーが発生してから、図9(a)に示すGC先論理ブロックBL3の状態がプログラム済みになり、かつ消去済み論理ブロックが1つも存在していない状態となるまでの期間に、LUT56の全ての論理アドレスと物理アドレスとの対応関係を調べれば、訂正不能なリードエラーが生じたデータを格納する疑似物理クラスタが有効クラスタであるか無効クラスタであるかを判定できる。しかし、LUT56のサイズが大きいと、この期間内にLUT56の全ての論理アドレスと物理アドレスとの対応関係を調べることは不可能である。
このような状況を避けるため、GC先論理ブロックとなり得る多数の消去済み論理ブロックを予め準備しておくことが考えられる。図10、図11は、消去済み論理ブロックを予め準備しておく場合のガベージコレクションの例を示す。論理ブロックBL0、BL1、BL2、BL4、…がプログラム済みであり、論理ブロックBL3、eBL0、eBL1、…が消去済みである。消去済み論理ブロックeBL0、eBL1、…はCG先論理ブロックとしてのみ使用され、ユーザデータの記憶には使用されない。消去済み論理ブロックeBL0、eBL1、…は一度もユーザデータが記憶されていない論理ブロックでも良いし、ユーザデータが記憶されていたが、ガベージコレクションにより全てのデータが消去され、今後はユーザデータの記憶には使用されない論理ブロックでも良い。
図10(a)に示すように、GC元論理ブロックBL0の有効クラスタからリードしたデータがGC先論理ブロックBL3に移動される。GC先論理ブロックBL3の状態は消去済みからプログラム中に変化する。
図10(b)に示すように、ガベージコレクションの途中でGC元論理ブロックBL0の疑似物理クラスタからリードしたデータが訂正不能である場合、リードデータをGC先論理ブロックBL3に移動することができない。
GC元論理ブロックBL0の全ての有効クラスタからリードしたデータがGC先論理ブロックBL3に移動されると、図10(c)に示すように、論理ブロックBL1がGC元論理ブロックとされ、GC元論理ブロックBL1の有効クラスタからリードしたデータがGC先論理ブロックBL3に移動される。
GC先論理ブロックBL3にライトされるデータの量が増えると、図11(a)に示すように、GC先論理ブロックBL3の状態がプログラム済みになり、これ以上GC元論理ブロックBL1からGC先論理ブロックBL3にデータを移動することができなくなる。
図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に移動され、ガベージコレクションが続行される。
GC元論理ブロックBL1の全ての有効クラスタからデータがリードされ、GC先論理ブロックeBL0にデータが移動されると、図11(c)に示すように、GC元論理ブロックBL1の全てのデータが消去される。消去済み論理ブロックBL1はGC先論理ブロックとなり得る。
このように、消去済み論理ブロックを予め用意しておくことにより、論理不明ブロックが生じても、GC先論理ブロックが枯渇する可能性は小さくなる。しかし、予め準備する消去済み論理ブロックのためにフラッシュメモリの記憶コストが高くなるデメリットもある。図10、図11の例では、LUT56の全ての論理アドレスと物理アドレスとの対応関係を調べ、論理不明ブロックが有効クラスタであるか無効クラスタであるかを判定するための期間は、図10(b)に示す訂正不能リードエラーが発生してから消去済み論理ブロックが1つも無くなるまでの期間である。このため、図8、図9に示す場合に比べて長時間であり、LUT56を調べて論理不明ブロックが有効クラスタであるか無効クラスタであるかを判定するための時間的余裕がある、
図12、図13は、消去済み論理ブロックを予め用意することなく、GC先論理ブロックの枯渇を防ぐことができるガベージコレクションの動作を示す。図12(a)に示すように、GC元論理ブロックBL0の有効クラスタからリードしたデータがGC先論理ブロックBL3に移動される。
図12(b)に示すように、ガベージコレクションの途中でGC元論理ブロックBL0からリードしたデータが訂正不能である場合、当該クラスタが有効クラスタか無効クラスタかを判定できず、当該クラスタからリードしたデータをGC先論理ブロックBL3に移動することができない。
GC元論理ブロックBL0の全ての有効クラスタからリードしたデータがGC先論理ブロックBL3に移動されると、図12(c)に示すように、新論理ブロックnBL0が生成される。新論理ブロックnBL0に割り当てられる物理ブロックはGC元論理ブロックBL0に割り当てられていた物理ブロックであり、そのデータは消去されている。とともに、GC元論理ブロックBL0が物理ブロックが割り当てられない論理不明ブロックに変更される。さらに、図12(c)に示すように、論理ブロックBL1がGC元論理ブロックとされ、GC元論理ブロックBL1の有効クラスタからリードしたデータがGC先論理ブロックBL3にデータが移動される。
GC先論理ブロックBL3にライトされるデータが増えると、図13(a)に示すように、GC先論理ブロックBL3の状態がプログラム済みになり、GC元論理ブロックBL1からGC先論理ブロックBL3にデータを移動することができなくなる。しかし、消去済み論理ブロックnBL0が存在するので、論理不明クラスタを含む論理不明ブロックが生じても、GC先論理ブロックnBL0が確保でき、図13(b)に示すように、GC元論理ブロックBL1の有効クラスタからリードしたデータがGC先論理ブロックnBL0に移動される。
GC元論理ブロックBL1のデータリード中に訂正不能なリードエラーが生じず、GC元論理ブロックBL1の有効クラスタの全てのデータがGC先論理ブロックnBL0に移動されると、図13(c)に示すように、GC元論理ブロックBL1の全てのデータが消去され、消去済み論理ブロックBL1はGC先論理ブロックとなり得る。
図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先論理ブロックが枯渇しにくい。
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除しても良い。更に、異なる実施形態に亘る構成要素を適宜組み合せても良い。
10…ホスト、20…SSD、22…コントローラ、24…NAND型フラッシュメモリ、26…RAM、42…リード制御部、44…ライト制御部、46…GC制御部、56…LUT、58…論理ブロックテーブル。

Claims (12)

  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記載の記憶制御方法。
JP2018140503A 2018-07-26 2018-07-26 記憶装置及び記憶制御方法 Active JP7042716B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2018140503A JP7042716B2 (ja) 2018-07-26 2018-07-26 記憶装置及び記憶制御方法
US16/284,253 US10754771B2 (en) 2018-07-26 2019-02-25 Storage device and storage control method
US16/935,001 US11366751B2 (en) 2018-07-26 2020-07-21 Storage device and storage control method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018140503A JP7042716B2 (ja) 2018-07-26 2018-07-26 記憶装置及び記憶制御方法

Publications (2)

Publication Number Publication Date
JP2020017134A true JP2020017134A (ja) 2020-01-30
JP7042716B2 JP7042716B2 (ja) 2022-03-28

Family

ID=69178393

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018140503A Active JP7042716B2 (ja) 2018-07-26 2018-07-26 記憶装置及び記憶制御方法

Country Status (2)

Country Link
US (2) US10754771B2 (ja)
JP (1) JP7042716B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11580016B2 (en) * 2019-08-30 2023-02-14 Micron Technology, Inc. Adjustable garbage collection suspension interval
US11809314B2 (en) * 2021-11-21 2023-11-07 Silicon Motion, Inc. Method and apparatus for performing access control of memory device with aid of multi-stage garbage collection management

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110238629A1 (en) * 2010-03-23 2011-09-29 Apple Inc. Uncorrectable error handling schemes for non-volatile memories
JP2011197945A (ja) * 2010-03-18 2011-10-06 Toshiba Corp コントローラ、データ記憶装置、及びプログラム
JP2013137771A (ja) * 2011-12-12 2013-07-11 Apple Inc データ利用についてのマウント時間の調停
JP2013200741A (ja) * 2012-03-26 2013-10-03 Toshiba Corp 半導体記憶装置、その制御方法及び情報処理装置
JP2013200722A (ja) * 2012-03-26 2013-10-03 Toshiba Corp 半導体記憶装置の論理ブロックの構築方法

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8799747B2 (en) * 2010-06-03 2014-08-05 Seagate Technology Llc Data hardening to compensate for loss of data retention characteristics in a non-volatile memory
US8661193B1 (en) * 2010-10-29 2014-02-25 Western Digital Technologies, Inc. Disk drive with partial sector management
JP2013174975A (ja) 2012-02-23 2013-09-05 Toshiba Corp メモリシステムとそのデータ書き込み方法
US8924832B1 (en) * 2012-06-26 2014-12-30 Western Digital Technologies, Inc. Efficient error handling mechanisms in data storage systems
US9136873B2 (en) * 2013-03-11 2015-09-15 Intel Corporation Reduced uncorrectable memory errors
US20150046772A1 (en) * 2013-08-06 2015-02-12 Sandisk Technologies Inc. Method and device for error correcting code (ecc) error handling
US9519577B2 (en) * 2013-09-03 2016-12-13 Sandisk Technologies Llc Method and system for migrating data between flash memory devices
US9389973B2 (en) * 2014-05-30 2016-07-12 Oracle International Corporation Memory error propagation for faster error recovery
JP6313242B2 (ja) 2014-10-30 2018-04-18 東芝メモリ株式会社 メモリシステム及びプログラム
US11334478B2 (en) 2014-10-30 2022-05-17 Kioxia Corporation Memory system and nonvolatile memory medium in which program is stored to optimize operating life
US10268400B2 (en) * 2015-09-03 2019-04-23 Sandisk Technologies Llc System and method for file detection and usage during compaction
US20180121348A1 (en) * 2016-10-31 2018-05-03 Microsoft Technology Licensing, Llc Automatic Garbage Collection for Distributed Storage
US10802911B2 (en) * 2017-08-16 2020-10-13 Western Digital Technologies, Inc. Non-volatile storage with wear-adjusted failure prediction
US11513951B2 (en) * 2019-07-31 2022-11-29 EMC IP Holding Company, LLC System and method for improving write performance for log structured storage systems

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011197945A (ja) * 2010-03-18 2011-10-06 Toshiba Corp コントローラ、データ記憶装置、及びプログラム
US20110238629A1 (en) * 2010-03-23 2011-09-29 Apple Inc. Uncorrectable error handling schemes for non-volatile memories
JP2013137771A (ja) * 2011-12-12 2013-07-11 Apple Inc データ利用についてのマウント時間の調停
JP2013200741A (ja) * 2012-03-26 2013-10-03 Toshiba Corp 半導体記憶装置、その制御方法及び情報処理装置
JP2013200722A (ja) * 2012-03-26 2013-10-03 Toshiba Corp 半導体記憶装置の論理ブロックの構築方法

Also Published As

Publication number Publication date
US20200349070A1 (en) 2020-11-05
JP7042716B2 (ja) 2022-03-28
US10754771B2 (en) 2020-08-25
US20200034290A1 (en) 2020-01-30
US11366751B2 (en) 2022-06-21

Similar Documents

Publication Publication Date Title
US11301373B2 (en) Reconstruction of address mapping in a host of a storage system
CN109144888B (zh) 存储器系统
US9507711B1 (en) Hierarchical FTL mapping optimized for workload
US10452532B2 (en) Directed sanitization of memory
US8904090B2 (en) Non-volatile memory device, devices having the same, and method of operating the same
JP2023524014A (ja) 順次的にプログラムするメモリサブシステムにおいて非同期電力損失をハンドリングすること
US20150347291A1 (en) Flash memory based storage system and operating method
TWI474324B (zh) 平均讀寫記憶元件的方法及記憶體系統
US8694748B2 (en) Data merging method for non-volatile memory module, and memory controller and memory storage device using the same
US9619380B2 (en) Data writing method, memory control circuit unit and memory storage apparatus
KR20220005111A (ko) 메모리 시스템, 메모리 컨트롤러 및 메모리 시스템의 동작 방법
CN112445733A (zh) 存储器系统、存储器控制器以及操作方法
CN113035262A (zh) 存储器子系统中奇偶校验数据的管理
CN113031856A (zh) 存储器子系统中的断电数据保护
CN114579475A (zh) 电子系统及其操作方法
CN114639415A (zh) 后台存储器扫描块选择
US11366751B2 (en) Storage device and storage control method
CN112534415B (zh) 非易失性存储器中的数据有效性跟踪
US9792068B2 (en) Memory system and method of controlling nonvolatile memory
KR20200084901A (ko) 오프셋에 기반한 로직 블록 매핑
KR20230160620A (ko) 메모리 시스템에서 데이터를 복구하는 장치 및 방법
US11645003B2 (en) Memory system generating parity data based on written data and control method
US11914471B1 (en) Block failure protection for zone memory system
US20240004566A1 (en) Memory system for managing namespace using write pointer and write count, memory controller, and method for operating memory system
CN113253917A (zh) 用于存储器子系统的媒体管理的多状态炼狱

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20180830

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210318

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20220127

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20220215

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220315

R151 Written notification of patent or utility model registration

Ref document number: 7042716

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151