JP2018160195A - メモリシステムおよび不揮発性メモリの制御方法 - Google Patents

メモリシステムおよび不揮発性メモリの制御方法 Download PDF

Info

Publication number
JP2018160195A
JP2018160195A JP2017058268A JP2017058268A JP2018160195A JP 2018160195 A JP2018160195 A JP 2018160195A JP 2017058268 A JP2017058268 A JP 2017058268A JP 2017058268 A JP2017058268 A JP 2017058268A JP 2018160195 A JP2018160195 A JP 2018160195A
Authority
JP
Japan
Prior art keywords
data
block
stream
garbage collection
blocks
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.)
Pending
Application number
JP2017058268A
Other languages
English (en)
Inventor
恭成 柳田
Kyosei Yanagida
恭成 柳田
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
Toshiba Memory 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 Toshiba Memory Corp filed Critical Toshiba Memory Corp
Priority to JP2017058268A priority Critical patent/JP2018160195A/ja
Priority to US15/694,832 priority patent/US10296455B2/en
Publication of JP2018160195A publication Critical patent/JP2018160195A/ja
Pending legal-status Critical Current

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
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • G06F3/0641De-duplication techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Memory System (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

【課題】マルチストリーム管理されるデータを好適に管理するメモリシステムおよび不揮発性メモリの制御方法を提供する。
【解決手段】第1ストリームに関連付けられた第1ブロックにストアされた有効な第1データおよび第1ストリームに関連付けられた第2ブロックにストアされた有効な第2データをNANDメモリ10からリードし、リードされた第1データおよび第2データをNANDメモリ10の第3ブロックにライトする。したがって、ガベージコレクションによるWAF(Write Amplification Factor)の増加が防止され、メモリシステムが長寿命化し、性能が向上する。
【選択図】図1

Description

本実施形態は、不揮発性メモリを備えるメモリシステムおよび不揮発性メモリの制御方法に関する。
マルチストリーム制御では、ホストは、マルチストリーム管理を行い、例えばライフタイムが同じデータに同一のストリームIDを割り当てる。同じストリームIDを持つデータは、まとめて無効化される可能性が高い。しかし、ホストで行われるマルチストリーム管理は、アプリケーションや使用ユーザーによっては、適切でない可能性がある。
特開2011−159044号公報
一つの実施形態は、マルチストリーム管理されるデータを好適に管理するメモリシステムおよび不揮発性メモリの制御方法を提供することを目的とする。
一つの実施形態によれば、メモリシステムは、複数のブロックを有する不揮発性メモリと、制御回路を備えるメモリコントローラとを備える。前記制御回路は、第1ストリームに関連付けられた第1ブロックにストアされた有効な第1データおよび前記第1ストリームに関連付けられた第2ブロックにストアされた有効な第2データを前記不揮発性メモリからリードし、前記リードされた第1データおよび第2データを前記不揮発性メモリの第3ブロックにライトすることを含む第1ストリームにかかる第1ガベージコレクションを実行する。前記制御回路は、第2ストリームに関連付けられた第4ブロックにストアされた有効な第3データおよび前記第2ストリームに関連付けられた第5ブロックにストアされた有効な第4データを前記不揮発性メモリからリードし、前記リードされた第3データおよび第4データを前記不揮発性メモリの第6ブロックにライトすることを含む第2ストリームにかかる第2ガベージコレクションを実行する。前記制御回路は、前記第1ガベージコレクションの実行に応じて前記第3ブロックを前記第1ストリームに関連付け、前記第2ガベージコレクションの実行に応じて前記第6ブロックを前記第2ストリームに関連付ける。
図1は、メモリシステムの構成例を示すブロック図である。 図2は、マルチストリームのライト動作を概念的に示す図である。 図3は、ストリーム管理情報のデータ構造を示す図である。 図4は、第1の実施形態のガベージコレクションの動作手順を示すフローチャートである。 図5は、第1の実施形態のガベージコレクションの動作手順を示すフローチャートである。 図6は、破片データの書き込みの動作手順を示すフローチャートである。 図7は、第1の実施形態のガベージコレクションの動作を概念的に示す図である。 図8は、第2の実施形態のライトバッファの構成例を示すブロック図である。 図9は、第2の実施形態のガベージコレクションの動作手順を示すフローチャートである。 図10は、第2の実施形態のガベージコレクションの動作を概念的に示す図である。 図11は、ホストからマルチストリームのライト要求を受信したときのメモリシステムの動作手順を示すフローチャートである。
以下に添付図面を参照して、実施の形態にかかるメモリシステムおよび不揮発性メモリの制御方法を詳細に説明する。なお、これらの実施の形態により本発明が限定されるものではない。
(第1の実施形態)
図1は第1の実施形態のメモリシステム100の構成例を示すブロック図である。メモリシステム100は、ホスト装置(以下、ホストと略す)1と通信線で接続され、ホスト1の外部記憶装置として機能する。ホスト1は、例えば、パーソナルコンピュータなどの情報処理装置、携帯電話、撮像装置であってもよいし、タブレットコンピュータやスマートフォンなどの携帯端末であってもよいし、ゲーム機器であってもよいし、カーナビゲーションシステムなどの車載端末であってもよい。
メモリシステム100は、不揮発性メモリとしてのNAND型フラッシュメモリ(以下、NANDメモリと略す)10と、メモリコントローラ20と、RAM(Random Access Memory)40を備える。不揮発性メモリとしては、NAND型フラッシュメモリに限らず、3次元構造フラッシュメモリ、ReRAM(Resistance Random Access Memory))、FeRAM(Ferroelectric Random Access Memory)、クロスポイント型メモリ、相変化型メモリ(Phase Change Memory; PCM)、磁気抵抗メモリ(Magnetoresistive Random Access Memory; MRAM)などであってもよい。
NANDメモリ10は、複数のメモリチップを有する。各メモリチップは、複数の物理ブロックを有する。物理ブロックは、データ消去の物理的な最小単位である。各物理ブロックは、複数のメモリセルを有する。各メモリセルは多値記憶が可能である。各物理ブロックは、複数のページを含む。データのリードおよびライトは、ページ単位で実行される。ページへのデータ書き込みは、一般的に1消去サイクル当たり1回のみ可能である。また、NANDメモリ10は、複数の論理ブロック#B1,#B2,…,#Bnを含む。論理ブロックは、複数のメモリチップから物理ブロックを集めて構成される。論理ブロックは、チップ並列動作を行えるように複数の物理ブロックが組み合わせられる。論理ブロックを構成する複数の物理ブロックは、同時に消去されて、データ書込み用の論理ブロックとして使用される。なお、プレーン並列動作が可能なメモリチップの場合、プレーン並列動作およびチップ並列動作が可能なように論理ブロックを構成してもよい。
NANDメモリ10には、ホスト1から送信されるユーザデータと、メモリシステム100の管理情報と、ファームウェアなどがストアされる。前記ファームウェアは、メモリコントローラ20の制御部30の機能の少なくとも一部を実現するCPU(図示せず)を動作させる。前記ファームウェアは、図示しないROMにストアされてもよい。前記管理情報は、論理物理変換情報(L2P情報)などを含む。
RAM40は、NANDメモリ10よりも高速アクセスが可能な揮発性の半導体メモリである。RAM40としては、SRAM(Static Random Access Memory)やDRAM(Dynamic Random Access Memory)が用いられる。RAM40は、ライトバッファ42、ガベージコレクションバッファ(以下、GCバッファという)43、書き込み完了カウンタ45を有する。RAM40は、L2P情報41、ストリーム管理情報44、ブロック管理情報46をストアする。ホスト1から受信されたデータは、NANDメモリ10にライトされる前に、ライトバッファ42に一時的にバッファリングされる。GCバッファ43は、NANDメモリ10のガベージコレクション元の論理ブロックからリードした有効データを、ガベージコレクション先の論理ブロックにライトするまでの間バッファリングする。書き込み完了カウンタ45は、ガベージコレクションによって書き込み完了した論理ブロック数の計数値をストリームID毎に保持する。
L2P情報41は、ホスト1が指定可能な論理アドレスと、NANDメモリ10の物理アドレスとを関連付けるマッピング情報を含む。論理アドレスとしては、例えばLBA(Logical Block Addressing)が用いられる。物理アドレスは、データが記憶されているNANDメモリ10上の記憶位置を示している。
前記管理情報の一つであるブロック管理情報46は、NANDメモリ10に含まれる論理ブロックを管理する。ブロック管理情報では、例えば以下のブロック管理情報が管理される。
・論理ブロック単位の消去回数(erase count)
・論理ブロックがアクティブブロックかフリーブロックかを区別する情報
・論理ブロック単位の有効データ数あるいは有効データ率
・バッドブロックのブロックアドレス
・論理ブロックとストリームIDとの関連付け情報
論理ブロックは、アクティブブロック→フリーブロック→消去済ブロック→書き込み先ブロック→アクティブブロックという順番でサイクリックに遷移される。アクティブブロックは、1以上の有効(valid)データが記録されており、かつ有効データまたは無効データで満杯のブロックである。あるいは、アクティブブロックは、1以上の有効(valid)データが記録されており、かつこれ以上の書き込みを行わないブロックである。フリーブロックは、有効データが記録されていない。フリーブロックは、データを消去した後、消去済みブロックとして再利用可能である。有効データとはL2P情報41によって論理アドレスと対応付けられているデータであり、無効データとはL2P情報41によって論理アドレスが対応付けられていないデータである。消去済みブロックは書き込み先ブロックに遷移する。書き込み先ブロックに対して、書き込みが開始される。書き込み先ブロックは、データを書き込むことが可能である。アクティブブロックは、データを書き込むことができない。バッドブロックは、様々な要因で正常に動作せず、使用不可となっている。
ストリーム管理情報44は、ストリームIDと、ストリームIDが付加されたデータがライトされる1または複数の書き込み先ブロックおよび/またはアクティブブロックとの対応関係を含む。
メモリコントローラ20は、ホストインタフェース(ホストIF)21と、メモリインタフェース(メモリIF)22と、制御部30とを備える。本実施形態は、RAM40をメモリコントローラ20の外部に設けているが、RAM40をメモリコントローラ20の内部に設けてもよい。
ホストIF21は、ホスト1からライト要求およびリード要求を受信する。前記ライト要求は、ライトコマンド、ライトアドレス、ライトデータを含む。前記リード要求は、リードコマンド、リードアドレスを含む。ホストIF21は、受信されたライト要求またはリード要求を制御部30に転送する。また、ホストIF21は、NANDメモリ10から読み出されたユーザデータ、制御部30の応答などをホスト1へ送信する。
制御部30は、メモリシステム100の各構成要素を統括的に制御する。制御部30は、データ管理部31、ライト制御部32、リード制御部33、ガベージコレクション元供給部(以下、GC元供給部という)34、ガベージコレクション先供給部(以下、GC先供給部という)35、ガベージコレクション書き込み部(GC書き込み部)36を有する。制御部30は、RAM40にロードされたファームウェアを実行する1または複数のCPU(プロセッサ)および周辺回路によってその機能が実現される。
データ管理部31は、前記ブロック管理情報46を使用してNANDメモリ10に含まれる論理ブロックの管理を実行する。データ管理部31は、前記L2P情報41を使ってユーザデータを管理する。ホスト1からライト要求を受信した場合、データ管理部31は、ブロック管理情報46を使って論理アドレスとしてのライトアドレスを物理アドレスへ変換し、ライトデータを書き込むNANDメモリ10上の記録位置(物理アドレス)を決定する。データ管理部31は、論理アドレスおよび決定された物理アドレスによってL2P情報41を更新する。ホスト1からリード要求を受信した場合、データ管理部31は、L2P情報41を使って論理アドレスとしてのリードアドレスを物理アドレスへ変換し、データをリードするNANDメモリ10上の記録位置(物理アドレス)を決定する。
ライト制御部32は、ホスト1から受信したライト要求に従い、NANDメモリ10にデータを書き込むための処理を実行する。ライト制御部32は、ホスト1からライト要求を受信した場合、ホスト1から転送されたデータをライトバッファ42にバッファリングする。ライト制御部32は、ライトバッファ42にバッファリングされたデータが所定量を超えた場合、ライトバッファ42からデータをメモリIF22に転送する。また、ライト制御部32は、データを書込むべきNANDメモリ10上の物理アドレスをデータ管理部31から取得し、取得された物理アドレスをメモリIF22に出力する。
リード制御部33は、ホスト1から受信したリード要求に従い、NANDメモリ10からデータを読み出すための制御を行う。リード制御部33は、リードデータの論理アドレスに対応するNANDメモリ10上の物理アドレスをデータ管理部31から取得し、取得された物理アドレスをメモリIF22に出力する。
GC元供給部34、GC先供給部35およびGC書き込み部36は、ガベージコレクションを実行する。メモリシステム100において、データの消去単位(ブロック)と、データの書き込み単位が異なる場合、NANDメモリ10の書き換えが進むと、無効なデータによって、ブロックは断片化(fragmented)される。このような断片化されたブロックが増えると、使用可能なブロックが少なくなる。そこで、例えば、NANDメモリ10のフリーブロックの数が所定の閾値より少なくなった場合、ガベージコレクションを実行し、フリーブロックを増加させる。ガベージコレクションでは、有効なデータおよび無効なデータが含まれているガベージコレクション元の1または複数の論理ブロックから有効データが集められて、ガベージコレクション先の論理ブロックに書き直される。
GC元供給部34は、ストリーム管理情報44、ブロック管理情報46で管理される有効データ率(または有効データ量)、および書き込み完了カウンタ45に基づいて、アクティブブロックをガベージコレクション元の論理ブロックとして選択する。
GC書き込み部36は、GC元供給部34によって指定されたGC元の論理ブロックから有効データをリードし、リードされた有効データをGCバッファ43にバッファリングする。GC書き込み部36は、バッファリングされた有効データを、GC先供給部35によって指定されたGC先の論理ブロックへ書き込む。GC書き込み部36は、論理ブロックを1つ書き込み完了する毎に、書き込み完了カウンタをインクリメントする。GC書き込み部36は、書き込みに応じて、GC先の論理ブロックがストリームIDに対応するようにストリーム管理情報44を更新する。
メモリIF22は、ライト制御部32から入力された物理アドレスとライトバッファ42から入力されるライトデータをNANDメモリ10に出力することによって、NANDメモリ10へライトデータを書き込む。また、メモリIF22は、リード制御部33から入力された物理アドレスをNANDメモリ10に出力することによって、NANDメモリ10からデータをリードする。メモリIF22は、ECC(Error Correcting Code; ECC)回路を備えてもよい。ECC回路は、ライトバッファ42から転送されたデータに対して、誤り訂正の符号化処理を実施しパリティを生成する。ECC回路は、データおよびパリティを含む符号語をNANDメモリ10へ出力する。ECC回路は、NANDメモリ10からリードされた符号語を用いて誤り訂正の復号化処理を実行し、復号されたデータをリード制御部33に転送する。
本実施形態にかかるメモリシステム100は、通常のライト動作に加え、前記ガベージコレクションの実行頻度を少なくするためのマルチストリームのライト動作をサポートしている。マルチストリームにおいては、ホスト1は、同じファイルに含まれるデータのような、同じライフタイムを持つデータを同じストリームIDを持つストリームに関連付ける。メモリシステム100は、同じストリームIDに関連付けられた1以上のデータを同じグループに所属する1または複数の論理ブロックにライトする。一方、異なるストリームIDに関連付けられたデータは異なるグループに所属する論理ブロックにライトする。ホスト1がデータを削除する際、同じストリームIDに関連付けられた全データが一斉に無効化する可能性が高いため、本実施形態にかかるメモリシステム100によるマルチストリーム制御によれば、ガベージコレクションの実行頻度を少なくすることができ、メモリシステム100の性能劣化や寿命短縮を改善できる。
図2は、本実施形態にかかるマルチストリームによるライト動作を概念的に示す図である。ストリームID1が付されたデータ(LBA1、LBA2、LBA3、LBA4、LBA5によってそれぞれ指定されるデータ)は、ID1のストリーム用に割り当てられた消去済みの論理ブロック#B1にライトされる。ストリームID2が付されたデータ(LBA102、LBA103、LBA200、LBA10、LBA201によってそれぞれ指定されるデータ)は、ID2のストリーム用に割り当てられた消去済みの論理ブロック#B2にライトされる。
ホスト1がストリームIDを割り当てるポリシーとしては、各々のアプリケーションが任意に決めているため、ライフタイムが異なるデータが同一のストリームに割り当てられる場合や、各ストリームIDに割り当てられるデータサイズがメモリシステム100におけるストリームデータの管理単位と一致していない場合がある。このような場合は、メモリシステム100での書き込みが進行すると、マルチストリーム管理される論理ブロックに対してもガベージコレクションが発生する可能性がある。マルチストリーム管理される論理ブロックに対するガベージコレクションが発生した場合、例えば、有効データ率のみによってガベージコレクション元の論理ブロックを選択すると、異なるストリームIDを持つデータが同じガベージコレクション先の論理ブロックに混在して書き込まれる。この場合、WAF(Write Amplification Factor)が増加し、メモリシステム100の寿命低下、性能低下の原因となる。
そこで、本実施形態では、同じストリームIDを持つ論理ブロックのみをガベージコレクション元として選択して、ガベージコレクションを実行する。すなわち、本実施形態のガベージコレクションにおいては、第1ストリームに関連付けられた第1ブロックにストアされた有効な第1データおよび前記第1ストリームに関連付けられた第2ブロックにストアされた有効な第2データをNANDメモリ10からリードし、前記リードされた第1データおよび第2データをNANDメモリ10の第3ブロックにライトする。したがって、本実施形態では、ガベージコレクションによるWAFの増加が防止され、メモリシステムの長寿命化および性能向上が実現される。
図3は、データ管理部31によって管理されるストリーム管理情報44のデータ構造を示す図である。ストリーム管理情報44は、ストリームIDと、1または複数の書き込み先ブロックのID(論理ブロックアドレス)および1または複数のアクティブブロックのIDとの対応関係を示す情報を含む。図3では、ストリームID1に、書き込み先ブロック#B5,#B6とアクティブブロック#B1,#B300,#B301,#B302が登録され、ストリームID2に、書き込み先ブロック#B7とアクティブブロック#B2,#B400,#B401が登録された例が示されている。無効値のストリームIDには、書き込み先ブロック#B201とアクティブブロック#B600が関連付けられている。データ管理部31は、ホスト1からマルチストリーム制御の書き込み要求を受信した場合に、新たな書き込み先ブロックを選択するときに、ストリーム管理情報44に前記関連付け情報を登録する。また、データ管理部31は、ガベージコレクションを実行する場合に、新たなGC先の論理ブロックを選択するときに、ストリーム管理情報44に前記関連付け情報を登録する。また、データ管理部31は、アクティブブロックがフリーブロックに遷移するときに、ストリーム管理情報44におけるストリームIDとアクティブブロックのIDとの関連付けを解消する。
クローズストリームコマンドは、オープンされているストリームのクローズを要求するコマンドである。クローズストリームコマンドは、クローズされるストリームのストリームIDを示すパラメータを含む。データ管理部31は、クローズストリームコマンドをホスト1から受信すると、クローズストリームコマンドによって指定されたストリームIDに対応する書き込み先ブロックを、この後、アクティブブロックとして管理する。また、ストリーム管理情報44において、クローズストリームコマンドによって指定されたストリームIDとこのストリームIDに対応する論理ブロックとの対応付けは変更されない。そして、データ管理部31は、コマンド完了通知を含む応答をホスト1に送信する。
図4は、マルチストリーム管理される論理ブロックに対するガベージコレクションが発生したときの制御部30の動作手順を示すフローチャートである。データ管理部31は、マルチストリーム制御の全ストリームIDで使用されるフリーブロック数を計数している。この計数値が所定の閾値C1より少なくなった場合(S100 Yes)、データ管理部31は、GC元供給部34、GC先供給部35およびGC書き込み部36に対し指示し、マルチストリーム管理される論理ブロックに対するガベージコレクションを開始させる。データ管理部31は、GC書き込み部36に対し、書き込み完了数の目標値C2を指示する。書き込み完了数は、書き込み完了カウンタ45の計数値に対応する。書き込み完了数の目標値C2は、ガベージコレクション処理の1周期で書き込みを完了するGC先の論理ブロック数の目標値を示している。
GC元供給部34は、ストリーム管理情報44およびブロック管理情報46に基づいて、マルチストリーム管理される全てのアクティブブロックのなかから有効データ率が最も低いアクティブブロックを選択する(S110)。有効データ率とは、論理ブロックのサイズに対する有効なデータのサイズの割合である。なお、有効データ量が最も少ないアクティブブロックを選択してもよい。
GC書き込み部36は、書き込み完了カウンタ45の計数値を0にリセットする(S120)。GC先供給部35は、例えば、消去済みブロックを1つ選択し、選択された消去済みブロックのブロックアドレスをガベージコレクション先としてGC書き込み部36に通知する(S130)。
GC元供給部34は、S110で選択されたアクティブブロックのブロックアドレスをガベージコレクション元としてGC書き込み部36に通知する。さらに、GC元供給部34は、S110で選択されたアクティブブロックが所属するストリームIDをストリーム管理情報44に基づいて取得し、取得されたストリームIDをガベージコレクション対象の現ストリームIDとして設定する(S140)。ガベージコレクション対象の現ストリームIDを対象ストリームIDと略して呼称することもある。
GC先供給部35は、S130で選択された消去済みブロックのストリームIDを、S140で設定された前記対象ストリームIDに一致させるようにストリーム管理情報44を更新する(S150)。具体的には、GC先供給部35は、S140で設定された対象ストリームIDに、S130で選択された消去済みブロックのブロックアドレスを関連付ける。
つぎに、GC書き込み部36は、GC元供給部34から通知されたGC元の論理ブロックアドレスと、GC先供給部35から通知されたGC先の論理ブロックアドレスに基づいて、対象ストリームIDについてのガベージコレクション書き込み処理を開始する(S160)。
図5は、S160のガベージコレクション書き込み処理の詳細手順例を示すフローチャートである。GC書き込み部36は、メモリIF22を制御することによってNANDメモリ10のガベージコレクション元の論理ブロックから有効データを一定量リードする(S200)。GC書き込み部36は、リードされた有効データをGCバッファ43にバッファリングする。GC書き込み部36は、メモリIF22を制御することによって、CPバッファ43にバッファリングされている有効データを、ガベージコレクション先の論理ブロックに書き込む(S210)。GC書き込み部36は、ガベージコレクション先の論理ブロックの終端まで有効データが書き込まれたか否かを判定する(S220)。S220の判定がNoである場合、GC書き込み部36は、ガベージコレクション元の論理ブロックに有効データが残っているか否かを判定する(S230)。S230の判定がYesである場合、GC書き込み部36は、S200,S210,S220の処理を再度繰り返す。ガベージコレクション元の論理ブロックに有効データが残っていない場合(S230 No)、GC書き込み部36は、このガベージコレクション元の論理ブロックのブロックIDと前記対象ストリームIDとの関連付けを無効とするように、ストリーム管理情報44を更新する(S295)。これにより、アクティブブロックが解放され、フリーブロックに遷移される。S295の処理が終了すると、図5に示した処理は完了して、処理は図4のS180に移行される。
S220で、ガベージコレクション先の論理ブロックの終端までデータが書き込まれた場合(S220 Yes)、GC書き込み部36は、書き込み完了カウンタ45の計数値をインクリメントし(S240)、終端までデータが書き込まれた書込み先ブロックをアクティブブロックとしてストリーム管理情報44で管理するようにデータ管理部31に要求する。また、GC書き込み部36は、前記インクリメントした計数値が、書き込み完了数の目標値C2に達したか否かを判定する(S250)。書き込み完了カウンタ45の計数値が目標値C2に達していない場合(S250 No)、GC書き込み部36は、新たなガベージコレクション先の論理ブロックをGC先供給部35に要求する。すなわち、S250の判断がNoとなるケースは、ガベージコレクション元に有効データが残った状態で(S230 Yes)、ガベージコレクション先の論理ブロックの終端までデータが書き込まれた状態で(S220 Yes)、かつ書き込み完了したGC先の論理ブロック数が目標値C2に達していないケースであるので、新たなガベージコレクション先の論理ブロックの確保が必要になる。GC書き込み部36から要求があると、GC先供給部35は、例えば、消去済みブロックを1つ選択し、選択された消去済みブロックのブロックアドレスをガベージコレクション先としてGC書き込み部36に通知する(S260)。GC先供給部35は、S260で選択された消去済みブロックが、図4のS140で設定された前記対象ストリームIDに一致するようにストリーム管理情報44を更新する(S270)。この後、処理は、S230に移行される。
S250で、書き込み完了カウンタ45の計数値が、書き込み完了数の目標値C2に達している場合(S250 Yes)、GC書き込み部36は、ガベージコレクション元の論理ブロックに残存する有効データ量が閾値C3以上あるか否かを判定する(S280)。残存する有効データ量が閾値C3以上ある場合(S280 Yes)、GC書き込み部36は、ガベージコレクション元の論理ブロックに残存する有効データは破片データでないと判断し、ガベージコレクション元の論理ブロックに残存する有効データをそのまま残し、次回のガベージコレクションの対象とする。この後、処理は、図4のS100に移行される。残存する有効データ量が閾値C3以上でない場合(S280 No)、ガベージコレクション元の論理ブロックに残存する有効データは破片データであると判断し、GC書き込み部36は、破片データの書き込み処理を実行する(S290)。
図6は破片データの書き込み処理の詳細手順例を示すフローチャートである。GC書き込み部36は、破片データ書き込み用の論理ブロックが未設定であるか否かを判定する。破片データ用の論理ブロックは、異なる複数のストリームIDで共用する論理ブロックである。破片データ用の論理ブロックが未設定でない(設定されている)場合(S300 No)、GC書き込み部36は、破片データ用の論理ブロックに、破片データを書き込むための空き容量があるか否かを判定する(S305)。空き容量がある場合(S305 Yes)、GC書き込み部36は、破片データ書き込み用の論理ブロックに破片データを書き込む(S310)。一方、S300の判定がYesである場合、またはS305の判定がNoである場合、GC書き込み部36は、例えば、消去済みブロックを取得し、取得した消去済みブロックを破片データ書き込み用の論理ブロックに設定する(S320)。なお、破片データで満杯となった破片データ用の論理ブロックは、この後も、ストリーム管理情報44において、ストリームIDが無効値の論理ブロック(アクティブブロック)として管理される。GC書き込み部36は、破片データ用の論理ブロックのストリームIDを無効値に設定する(S330)。GC書き込み部36は、新たに設定された破片データ用の論理ブロックに破片データを書き込む(S310)。破片データの書き込み処理が終了すると、ガベージコレクション元の論理ブロックには、有効データが残っていない。GC書き込み部36は、ガベージコレクション元の論理ブロックのブロックIDと前記対象ストリームIDとの関連付けを無効とするように、ストリーム管理情報44を更新する(S298)。これにより、アクティブブロックが解放され、フリーブロックに遷移される。この後、処理は、図4のS100に移行される。
GC書き込み部36は、図5のS295の実行後、対象ストリームIDに所属する、新たなガベージコレクション元の論理ブロックをGC元供給部34に要求する。GC元供給部34は、ストリーム管理情報44に基づいて対象ストリームIDに所属する論理ブロックが存在するか否かを判定する(S180)。対象ストリームIDに所属する論理ブロックが存在する場合(S180 Yes)、GC元供給部34は、ストリーム管理情報44およびブロック管理情報46に基づいて、対象ストリームIDに所属する複数の論理ブロックのなかから有効データ率が最も低いアクティブブロックを選択する。GC元供給部34は、選択されたアクティブブロックのブロックアドレスを新たなガベージコレクション元としてGC書き込み部36に通知する(S190)。この後、前述したガベージコレクション書き込み処理が実行される(S160)。
図5のS240がYesとなり、S280、S290の処理が実行された場合、GC書き込み部36は、現対象ストリームIDの論理ブロックを使用したガベージコレクションを終了する。つぎに、GC書き込み部36は、フリーブロック数が閾値C1以上確保されたか否かをデータ管理部31に対し確認する(S100)。フリーブロック数が閾値C1未満である場合(S100 Yes)、GC書き込み部36は、GC元供給部34に対し、新たな対象ストリームIDの選択を要求する。GC元供給部34は、ストリーム管理情報44およびブロック管理情報46に基づいて、マルチストリーム管理される全てのアクティブブロックのなかから有効データ率が最も低いアクティブブロックを選択する(S110)。この選択の際には、有効データ率のみが判断基準であり、直前の周期にガベージコレクション対象となったストリームIDに所属するアクティブブロックが選択される可能性もあるし、直前の周期にガベージコレクション対象となっていないストリームIDに所属するアクティブブロックが選択される可能性もある。この後、次のストリームIDの論理ブロックを使用したガベージコレクションが開始される。すなわち、前記同様、書き込み完了カウンタ45の計数値がリセットされ(S120)、新たな消去済みブロックがガベージコレクション先として1つ確保され(S130)、S110で選択されたアクティブブロックが所属するストリームIDが新たな対象ストリームIDとして設定され(S140)、設定された新たな対象ストリームIDに、消去済みブロックのブロックIDが関連付けられる。
また、対象ストリームIDに所属する論理ブロックが存在しない場合(S180 No)、GC書き込み部36は、現対象ストリームIDの論理ブロックを使用したガベージコレクションを終了する。この後、手順はS100に移行され、S100の判断がYesの場合は、手順がS110から再度実行される。このような制御が繰り返され、フリーブロック数が閾値C1個、確保された段階で(S100 No)、ガベージコレクションが終了する。
図7は、第1の実施形態のガベージコレクションの動作手順を概念的に示す図である。図7の上側には、ガベージコレクション元の論理ブロックである論理ブロック#B100,#B101,#B102が示されている。論理ブロック#B100,#B101は、ストリームID=1のストリームに所属し、論理ブロック#B102は、ストリームID=2のストリームに所属する。図7の下側には、ガベージコレクション先の論理ブロックである論理ブロック#B200,#B201,#B202が示されている。左下がりハッチング、右下がりハッチング、クロスハッチング、あるいは複数のドットが付された小さな四角は、有効データがストアされた物理クラスタに対応する。ブランクの小さな四角は、無効データがストアされた物理クラスタに対応する。クラスタは、L2P情報41のマッピングの最小管理単位である。
図7においては、ストリームID=1に所属する論理ブロック#B100にストアされた有効データがリードされて論理ブロック#B200にライトされている。これにより、論理ブロック#B100は、有効データを含まなくなるので、ストリーム管理情報44におけるストリームID=1と論理ブロック#B100との関連付けが解消される。この後、論理ブロック#B100はフリーブロックとして管理され、フリーブロック数がプラス1される。また、ストリームID=1に所属する論理ブロック#B101にストアされた有効データの一部がリードされて論理ブロック#B200にライトされている。このライトにより論理ブロック#B200は有効データで満杯になるので、書き込み完了カウンタ45がインクリメントされる。また、ストリーム管理情報44において、ストリームID=1に論理ブロック#B200が関連付けられる。
論理ブロック#B101には有効データが残存している。残存する有効データ量が閾値C3より少ないとする。したがって、論理ブロック#B101に残存する有効データがリードされて論理ブロック#B201にライトされている。これにより、論理ブロック#B101は、有効データを含まなくなるので、ストリーム管理情報44におけるストリームID=1と論理ブロック#B101との関連付けが解消される。この後、論理ブロック#B101はフリーブロックとして管理され、フリーブロック数がプラス1される。論理ブロック#B201は、破片データ用の論理ブロックである。クロスハッチングが付された小さな四角および複数のドットが付された小さな四角は、ストリームID=1とは異なるストリームに所属する破片データを示している。図3に示したように、ストリーム管理情報44において、論理ブロック#B201には、無効値のストリームIDが関連付けられている。
ストリームID=2に所属する論理ブロック#B102にストアされた有効データがリードされて論理ブロック#B202にライトされている。これにより、論理ブロック#B102は、有効データを含まなくなるので、ストリーム管理情報44におけるストリームID=2と論理ブロック#B102との関連付けが解消される。この後、論理ブロック#B102はフリーブロックとして管理され、フリーブロック数がプラス1される。また、ストリーム管理情報44において、ストリームID=2に論理ブロック#B202が関連付けられる。
(第2の実施形態)
第2の実施形態では、破片データをライトバッファ42に書き込むようにしている。図8は、第2の実施形態に適用されるライトバッファ42の内部構成例を示す図である。第2の実施形態では、ライトバッファ42は、ストリームIDによって複数のバッファ領域に分割されている。すなわち、ライトバッファ42は、ストリームID1用のバッファ領域42a、ストリームID2用のバッファ領域42b、…を有する。第2の実施形態のメモリシステムの他の構成要素の機能は、図1に示したメモリシステム100と同様であり、重複する説明は省略する。第2の実施形態においても、マルチストリーム管理される論理ブロックに対するガベージコレクションが発生したとき、制御部30は、図4に示した動作手順に従って動作する。図9は、図4のS160のガベージコレクション書き込み処理手順の第2の実施形態の詳細手順例を示すフローチャートである。図9のS200,S210,S220,S230,S240,S250,S260,S270,およびS295の処理内容に関しては、図5のS200,S210,S220,S230,S240,S250,S260,S270,およびS295の処理内容と同じであり、重複する説明は省略する。
S250で、書き込み完了カウンタ45の計数値が、書き込み完了数の目標値C2に達している場合(S250 Yes)、GC書き込み部36は、現対象ストリームIDがオープンであるか否かを判定する(S400)。現対象ストリームIDがオープンでなくクローズされている場合(S400 No、GC書き込み部36は、このガベージコレクション元の論理ブロックに残存する有効データをそのまま残し、次回のガベージコレクションの対象とする。なお、ストリームをクローズするとき、データ管理部31は、クローズされるストリームID用のバッファ領域にバッファリングされているデータを、対応するストリームIDの論理ブロックにライトして前記バッファ領域を空にした後、クローズする。現対象ストリームIDがオープンである場合(S400 Yes )、GC書き込み部36は、現対象ストリームIDのライトバッファ42の空き容量からガベージコレクション元の論理ブロックに残存する有効データ量を減算する。GC書き込み部36は、この減算結果を閾値C4と比較し、減算結果が閾値C4以上あるか否かを判定する(S410)。前記減算結果が閾値C4以上ある場合(S410 Yes)、GC書き込み部36は、ガベージコレクション元の論理ブロックに残存する有効データは破片データであると判断し、ガベージコレクション元の論理ブロックに残存する有効データを現対象ストリームIDのライトバッファ42にバッファリングする(S420)。なお、閾値C4は、破片データを現対象ストリームIDのライトバッファ42にバッファリングしても、前記ライトバッファ42にホスト1からのライトデータを或る程度バッファリングできる余裕があるように、設定される。ライトバッファ42への破片データのバッファリング処理が終了すると、ガベージコレクション元の論理ブロックには、有効データが残っていない。GC書き込み部36は、ガベージコレクション元の論理ブロックのブロックIDと前記対象ストリームIDとの関連付けを無効とするように、ストリーム管理情報44を更新する(S298)。これにより、アクティブブロックが解放され、フリーブロックに遷移される。この後、処理は、図4のS100に移行される。前記減算結果が閾値C4未満である場合(S410 No)、GC書き込み部36は、ガベージコレクション元の論理ブロックに残存する有効データは破片データでないと判断し、ガベージコレクション元の論理ブロックに残存する有効データをそのまま残し、次回のガベージコレクションの対象とする。この後、処理は、図4のS100に移行される。
図10は、第2の実施形態のガベージコレクションの動作手順を概念的に示す図である。図10の上側には、ガベージコレクション元の論理ブロックである論理ブロック#B100,#B101,#B102が示されている。図10の下側には、ガベージコレクション先の論理ブロックである論理ブロック#B200,#B202と、破片データの書き込み先であるライトバッファ42の一部の領域が示されている。
図10においては、ストリームID=1に所属する論理ブロック#B100にストアされた有効データがリードされて論理ブロック#B200にライトされている。また、ストリームID=1に所属する論理ブロック#B101にストアされた有効データの一部がリードされて論理ブロック#B200にライトされている。ストリーム管理情報44において、ストリームID=1に論理ブロック#B200が関連付けられる。
論理ブロック#B101には有効データが残存している。ストリームID=1用のバッファ領域の空き容量から論理ブロック#B101に残存する有効データ量を減算した値が閾値C4以上であるとする。したがって、論理ブロック#B101に残存する有効データがリードされてストリームID=1用のバッファ領域にバッファリングされている。また、ストリームID=2に所属する論理ブロック#B102にストアされた有効データがリードされて論理ブロック#B202にライトされている。ストリーム管理情報44において、ストリームID=2に論理ブロック#B202が関連付けられる。
図11は、マルチストリームのライトコマンドを受信したときの制御部30の動作手順を示すフローチャートである。マルチストリームのライトコマンドを受信すると(S500 Yes)、ライト制御部32は、ライトバッファ42に含まれる複数のバッファ領域のうちの、ライトコマンドで指定されたストリームIDに対応するバッファ領域に、ホスト1から転送されたデータをバッファリングする(S510)。各ストリームIDのバッファ領域42a、42b、…には、前述したように、ガベージコレクション処理の際に、破片データがバッファリングされている可能性がある。
ライト制御部32は、各バッファ領域42a、42b、…にバッファリングされたデータが所定量を超えた場合(S520 Yes)、バッファリングされたデータをバッファ領域からNANDメモリ10にフラッシュする。すなわち、ライト制御部32は、ストリーム管理情報44に基づいて、ライトデータが所属するストリームIDに関連付けられた論理ブロックIDを取得し、取得された論理ブロックIDに対応する論理ブロックに、バッファ領域内のデータをライトする(S530)。これにより、ライトバッファ42にバッファリングされた破片データは、ホスト1からのマルチストリームのライトデータと共に、対応するストリームIDに関連付けられた論理ブロックに書き込まれる。
このように第2の実施形態によれば、破片データを各ストリーム専用のライトバッファにバッファリングし、その後のホスト1から受信されるライトデータとともに、対応するストリームIDに関連付けられたブロックに書き込むようにしている。このため、第1の実施形態の効果の他に、ガベージコレクションの際の処理時間を短縮できるという効果を有する。
なお、図4に示した動作手順では、ストリーム管理情報44に基づいて現対象ストリームIDに所属する論理ブロックが存在するか否かをS180において判定し、対象ストリームIDに所属する論理ブロックが存在しない場合に、現対象ストリームIDの論理ブロックを使用したガベージコレクションを終了し、次のストリームIDの論理ブロックを使用したガベージコレクションを行うようにしている。しかし、S180の判定基準を次のように変更してもよい。すなわち、変形例では、現対象ストリームIDに所属する論理ブロックであって、有効データ率が閾値C5未満である論理ブロックの個数Naが、閾値C6以上存在する多い場合に、手順をS190に移行させ、前記個数Naが閾値C6未満である場合に、手順をS100に移行させる。閾値C5を、図5のS280で使用した閾値C3と一致させてもよい。この変形例では、有効データ率が閾値C5より少ない論理ブロックのみをガベージコレクション元として使用したガベージコレクションを行うようにしており、有効データ率の大きな論理ブロックを使ったガベージコレクションが行われることがない。
また、第1の実施形態において、破片データを破片データ書き込み用の論理ブロックに書き込まずに、ガベージコレクション元のブロックにそのまま残すように制御してもよい。また、第2の実施形態において、破片データをライトバッファ42に書き込むことなく、ガベージコレクション元のブロックにそのまま残すように制御してもよい。
なお、上記した実施形態では、論理ページ単位に、データの書き込み、ガベージコレクションを行うようにしたが、物理ページ単位にデータの書き込み、ガベージコレクションを行うように制御してもよい。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
1 ホスト装置、10 NAND型フラッシュメモリ(NANDメモリ)、20 メモリコントローラ、21 ホストIF、22 メモリIF、30 制御部、31 データ管理部、32 ライト制御部、33 リード制御部、34 ガベージコレクション元供給部、35 ガベージコレクション先供給部、36 ガベージコレクション書き込み部、40 RAM、41 L2P情報、42 ライトバッファ、43 ガベージコレクションバッファ、44 ストリーム管理情報、45 書き込み完了カウンタ、100 メモリシステム。

Claims (20)

  1. 複数のブロックを有する不揮発性メモリと、
    第1ストリームに関連付けられた第1ブロックにストアされた有効な第1データおよび前記第1ストリームに関連付けられた第2ブロックにストアされた有効な第2データを前記不揮発性メモリからリードし、前記リードされた第1データおよび第2データを前記不揮発性メモリの第3ブロックにライトすることを含む第1ストリームにかかる第1ガベージコレクションを実行し、
    第2ストリームに関連付けられた第4ブロックにストアされた有効な第3データおよび前記第2ストリームに関連付けられた第5ブロックにストアされた有効な第4データを前記不揮発性メモリからリードし、前記リードされた第3データおよび第4データを前記不揮発性メモリの第6ブロックにライトすることを含む第2ストリームにかかる第2ガベージコレクションを実行し、
    前記第1ガベージコレクションの実行に応じて前記第3ブロックを前記第1ストリームに関連付け、前記第2ガベージコレクションの実行に応じて前記第6ブロックを前記第2ストリームに関連付ける
    ように動作する制御回路を備えるメモリコントローラと、
    を備えるメモリシステム。
  2. 前記制御回路は、
    ブロック内の有効データ量または有効データ率に基づいて、前記第1ストリームに関連付けられた複数のブロックから前記第1ブロックおよび前記第2ブロックを選択し、かつ前記第2ストリームに関連付けられた複数のブロックから前記第4ブロックおよび前記第5ブロックを選択する請求項1に記載のメモリシステム。
  3. 前記制御回路は、
    前記第1データおよび前記第2データがライトされた前記第3ブロックの数が第1の閾値に到達した場合に、前記第1ガベージコレクションを終了し、
    前記第3データおよび前記第4データがライトされた前記第6ブロックの数が前記第1の閾値に到達した場合に、前記第2ガベージコレクションを終了する
    請求項1に記載のメモリシステム。
  4. 前記制御回路は、
    第1ストリームに関連付けられた複数のブロックのなかの、有効データ量または有効データ率が第2の閾値より小さいブロックの数が、第3の閾値より少ないことに応じて、前記第1ガベージコレクションを終了し、
    第2ストリームに関連付けられた複数のブロックのなかの、有効データ量または有効データ率が前記第2の閾値より小さいブロックの数が、前記第3の閾値より少ないことに応じて、前記第2ガベージコレクションを終了する
    請求項1に記載のメモリシステム。
  5. 前記制御回路は、
    前記第1データおよび前記第2データがライトされた前記第3ブロックの数が第1の閾値に到達した場合であって、前記第1ブロックまたは前記第2ブロックに残存する有効データ量が第4の閾値より少ない場合、前記残存する有効データを、第1ストリームおよび第2ストリームで共用される第7のブロックにライトする
    請求項1に記載のメモリシステム。
  6. 前記制御回路は、
    前記第7のブロックに対して無効値のストリームIDを関連付ける請求項5に記載のメモリシステム。
  7. 前記制御回路は、
    前記第1データおよび前記第2データがライトされた前記第3ブロックの数が第1の閾値に到達した場合であって、前記第1ブロックまたは前記第2ブロックに残存する有効データ量が第4の閾値より多い場合、前記残存した有効データを前記第1ブロックまたは前記第2のブロックに残存させた状態で、前記第1ガベージコレクションを終了する
    請求項1に記載のメモリシステム。
  8. 前記第1ストリームに関連付けられた、ホストから受信したデータをバッファリングするライトバッファを更に備え、
    前記制御回路は、
    前記第1データおよび前記第2データがライトされた前記第3ブロックの数が第1の閾値に到達した場合であって、前記ライトバッファの空き容量と前記第1ブロックまたは前記第2ブロックに残存する有効データ量との差が第5の閾値より大きい場合、前記残存する有効データを前記ライトバッファにバッファリングする
    請求項1に記載のメモリシステム。
  9. 前記制御回路は、
    前記第1ストリームに関連付けられるデータをホストから受信すると、受信したデータを前記ライトバッファにバッファリングし、
    前記ライトバッファにバッファリングされたデータ量が第6の閾値を越えると、前記ライトバッファのデータを前記第1のストリームに関連付けられる第8のブロックにライトする
    請求項8に記載のメモリシステム。
  10. 前記制御回路は、
    前記第1データおよび前記第2データがライトされた前記第3ブロックの数が前記第1の閾値に到達した場合であって、前記差が前記第5の閾値より小さい場合、前記残存する有効データを前記第1ブロックまたは前記第2のブロックに残存させた状態で、前記第1ガベージコレクションを終了する
    請求項8に記載のメモリシステム。
  11. 前記制御回路は、
    前記第1ガベージコレクションでは、前記第3のブロックを一つずつ選択し、選択された1つの第3ブロックに、前記リードされた第1データおよび第2データをライトし、
    前記第1ガベージコレクションの終了後に、前記第2ガベージコレクションを開始する
    請求項3に記載のメモリシステム。
  12. 複数のブロックを有する不揮発性メモリの制御方法であって、
    第1ストリームに関連付けられた第1ブロックにストアされた有効な第1データおよび前記第1ストリームに関連付けられた第2ブロックにストアされた有効な第2データを前記不揮発性メモリからリードし、前記リードされた第1データおよび第2データを前記不揮発性メモリの第3ブロックにライトすることを含む第1ストリームにかかる第1ガベージコレクションを実行することと、
    第2ストリームに関連付けられた第4ブロックにストアされた有効な第3データおよび前記第2ストリームに関連付けられた第5ブロックにストアされた有効な第4データを前記不揮発性メモリからリードし、前記リードされた第3データおよび第4データを前記不揮発性メモリの第6ブロックにライトすることを含む第2ストリームにかかる第2ガベージコレクションを実行することと、
    前記第1ガベージコレクションの実行に応じて前記第3ブロックを前記第1ストリームに関連付け、前記第2ガベージコレクションの実行に応じて前記第6ブロックを前記第2ストリームに関連付けること、
    を備える不揮発性メモリの制御方法。
  13. ブロック内の有効データ量または有効データ率に基づいて、前記第1ストリームに関連付けられた複数のブロックから前記第1ブロックおよび前記第2ブロックを選択し、かつ前記第2ストリームに関連付けられた複数のブロックから前記第4ブロックおよび前記第5ブロックを選択すること
    をさらに備える請求項12に記載の不揮発性メモリの制御方法。
  14. 前記第1データおよび前記第2データがライトされた前記第3ブロックの数が第1の閾値に到達した場合に、前記第1ガベージコレクションを終了することと、
    前記第3データおよび前記第4データがライトされた前記第6ブロックの数が前記第1の閾値に到達した場合に、前記第2ガベージコレクションを終了すること
    をさらに備える請求項12に記載の不揮発性メモリの制御方法。
  15. 第1ストリームに関連付けられた複数のブロックのなかの、有効データ量または有効データ率が第2の閾値より小さいブロックの数が、第3の閾値より少ないことに応じて、前記第1ガベージコレクションを終了することと、
    第2ストリームに関連付けられた複数のブロックのなかの、有効データ量または有効データ率が前記第2の閾値より小さいブロックの数が、前記第3の閾値より少ないことに応じて、前記第2ガベージコレクションを終了すること
    をさらに備える請求項12に記載の不揮発性メモリの制御方法。
  16. 前記第1データおよび前記第2データがライトされた前記第3ブロックの数が第1の閾値に到達した場合であって、前記第1ブロックまたは前記第2ブロックに残存する有効データ量が第4の閾値より少ない場合、前記残存する有効データを、第1ストリームおよび第2ストリームで共用される第7のブロックにライトすること
    をさらに備える請求項12に記載の不揮発性メモリの制御方法。
  17. 前記第1データおよび前記第2データがライトされた前記第3ブロックの数が第1の閾値に到達した場合であって、前記第1ブロックまたは前記第2ブロックに残存する有効データ量が第4の閾値より多い場合、前記残存した有効データを前記第1ブロックまたは前記第2のブロックに残存させた状態で、前記第1ガベージコレクションを終了すること
    をさらに備える請求項12に記載の不揮発性メモリの制御方法。
  18. 前記不揮発性メモリは、前記第1ストリームに関連付けられたライトバッファを更に備え、
    前記第1データおよび前記第2データがライトされた前記第3ブロックの数が第1の閾値に到達した場合であって、前記ライトバッファの空き容量と前記第1ブロックまたは前記第2ブロックに残存する有効データ量との差が第5の閾値より大きい場合、前記残存する有効データを、前記ライトバッファにバッファリングすること
    をさらに備える請求項12に記載の不揮発性メモリの制御方法。
  19. 前記第1ストリームに関連付けられるデータをホストから受信すると、受信したデータを前記ライトバッファにバッファリングすることと、
    前記ライトバッファにバッファリングされたデータ量が第6の閾値を越えると、前記ライトバッファのデータを前記第1のストリームに関連付けられる第8のブロックにライトすること
    をさらに備える請求項18に記載の不揮発性メモリの制御方法。
  20. 前記第1ガベージコレクションでは、前記第3のブロックを一つずつ選択し、選択された1つの第3ブロックに、前記リードされた第1データおよび第2データをライトし、
    前記第1ガベージコレクションの終了後に、前記第2ガベージコレクションを開始する請求項12に記載の不揮発性メモリの制御方法。
JP2017058268A 2017-03-23 2017-03-23 メモリシステムおよび不揮発性メモリの制御方法 Pending JP2018160195A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2017058268A JP2018160195A (ja) 2017-03-23 2017-03-23 メモリシステムおよび不揮発性メモリの制御方法
US15/694,832 US10296455B2 (en) 2017-03-23 2017-09-03 Memory system and control method of nonvolatile memory

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017058268A JP2018160195A (ja) 2017-03-23 2017-03-23 メモリシステムおよび不揮発性メモリの制御方法

Publications (1)

Publication Number Publication Date
JP2018160195A true JP2018160195A (ja) 2018-10-11

Family

ID=63582666

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017058268A Pending JP2018160195A (ja) 2017-03-23 2017-03-23 メモリシステムおよび不揮発性メモリの制御方法

Country Status (2)

Country Link
US (1) US10296455B2 (ja)
JP (1) JP2018160195A (ja)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10216417B2 (en) 2016-10-26 2019-02-26 Samsung Electronics Co., Ltd. Method of consolidate data streams for multi-stream enabled SSDs
US10761750B2 (en) 2017-03-09 2020-09-01 Netapp Inc. Selectively storing data into allocation areas using streams
US11048624B2 (en) * 2017-04-25 2021-06-29 Samsung Electronics Co., Ltd. Methods for multi-stream garbage collection
US10698808B2 (en) * 2017-04-25 2020-06-30 Samsung Electronics Co., Ltd. Garbage collection—automatic data placement
KR102457400B1 (ko) * 2017-11-16 2022-10-21 삼성전자주식회사 가비지 컬렉션 방법, 이를 수행하는 저장 장치 및 이를 포함하는 컴퓨팅 시스템
US10877691B2 (en) * 2017-12-29 2020-12-29 Intel Corporation Stream classification based on logical regions
US10976957B2 (en) * 2018-07-10 2021-04-13 ScaleFlux, Inc. Reducing multi-stream data write collision in solid-state data storage devices
US10949123B2 (en) * 2018-10-18 2021-03-16 Western Digital Technologies, Inc. Using interleaved writes to separate die planes
US10915444B2 (en) * 2018-12-27 2021-02-09 Micron Technology, Inc. Garbage collection candidate selection using block overwrite rate
US10956317B2 (en) * 2019-02-11 2021-03-23 International Business Machines Corporation Garbage collection in non-volatile memory that fully programs dependent layers in a target block
US11416389B2 (en) * 2019-07-17 2022-08-16 Micron Technology, Inc. Managing garbage collection in a memory subsystem based on characteristics of data streams
JP2021033945A (ja) 2019-08-29 2021-03-01 キオクシア株式会社 メモリシステムおよび制御方法
KR20210054399A (ko) * 2019-11-05 2021-05-13 에스케이하이닉스 주식회사 저장 장치 및 그 동작 방법
KR20210099930A (ko) * 2020-02-05 2021-08-13 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법
US11379359B2 (en) * 2020-02-11 2022-07-05 Micron Technology, Inc. Selecting data transfer units associated with a data stream for garbage collection
KR20210158043A (ko) 2020-06-23 2021-12-30 삼성전자주식회사 스트림 분류 번호에 따른 데이터 분류 스토리지 장치 및 그 동작 방법
US20220019370A1 (en) * 2020-07-16 2022-01-20 Micron Technology, Inc. Partial zone memory unit handling in a zoned namespace of a memory device
US20230019966A1 (en) * 2021-07-15 2023-01-19 Google Llc Storage Design For Host Controlled Logically Addressed Flexible Data Layout
KR20230097866A (ko) * 2021-12-24 2023-07-03 삼성전자주식회사 메모리 컨트롤러를 포함하는 스토리지 장치 및 스토리지 장치의 동작 방법

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4738536B1 (ja) 2010-01-29 2011-08-03 株式会社東芝 不揮発性メモリのコントローラ及び不揮発性メモリの制御方法
JP2012141946A (ja) 2010-12-16 2012-07-26 Toshiba Corp 半導体記憶装置
JP5579135B2 (ja) 2011-07-29 2014-08-27 株式会社東芝 データ記憶装置、メモリ制御装置及びメモリ制御方法
JP5439456B2 (ja) 2011-10-21 2014-03-12 富士フイルム株式会社 電子コミック編集装置、方法及びプログラム
US10409526B2 (en) * 2014-12-17 2019-09-10 Violin Systems Llc Adaptive garbage collection
US9696935B2 (en) * 2015-04-24 2017-07-04 Kabushiki Kaisha Toshiba Storage device that secures a block for a stream or namespace and system having the storage device
WO2017006675A1 (ja) * 2015-07-06 2017-01-12 日本電気株式会社 情報処理システム、記憶制御装置、記憶制御方法および記憶制御プログラム
US10884914B2 (en) * 2016-02-19 2021-01-05 International Business Machines Corporation Regrouping data during relocation to facilitate write amplification reduction
US10101939B2 (en) * 2016-03-09 2018-10-16 Toshiba Memory Corporation Storage system having a host that manages physical data locations of a storage device
KR102318477B1 (ko) * 2016-08-29 2021-10-27 삼성전자주식회사 Ssd 어레이 관리를 위한 스트림 식별자 기반 스토리지 시스템
US10698808B2 (en) * 2017-04-25 2020-06-30 Samsung Electronics Co., Ltd. Garbage collection—automatic data placement
US11048624B2 (en) * 2017-04-25 2021-06-29 Samsung Electronics Co., Ltd. Methods for multi-stream garbage collection

Also Published As

Publication number Publication date
US10296455B2 (en) 2019-05-21
US20180276118A1 (en) 2018-09-27

Similar Documents

Publication Publication Date Title
JP2018160195A (ja) メモリシステムおよび不揮発性メモリの制御方法
US20210303460A1 (en) Storage system having a host directly manage physical data locations of storage device
CN109144887B (zh) 存储器系统及控制非易失性存储器的控制方法
US10691611B2 (en) Isolated performance domains in a memory system
US20160062885A1 (en) Garbage collection method for nonvolatile memory device
KR100965051B1 (ko) 플래시 메모리 장치를 위한 가변 공간 페이지 사상 방법 및그 장치
US8055873B2 (en) Data writing method for flash memory, and controller and system using the same
US8463986B2 (en) Memory system and method of controlling memory system
JP2020046963A (ja) メモリシステムおよび制御方法
US9195579B2 (en) Page replacement method and memory system using the same
JP7358594B2 (ja) メモリシステム
JP2011145838A (ja) 記憶装置管理装置および記憶装置の管理方法
JP2007199905A (ja) 半導体記憶装置の制御方法
CN111309654B (zh) 存储装置及操作存储装置的方法
US10235284B2 (en) Memory system
JP2021043678A (ja) メモリシステム及び方法
JPWO2011068109A1 (ja) 記憶装置、およびメモリコントローラ
US10013174B2 (en) Mapping system selection for data storage device
US10346052B2 (en) Memory system with priority processing and operating method thereof
JP7381678B2 (ja) メモリシステム
JP2011070365A (ja) メモリシステム
JP2018160060A (ja) メモリシステム
TW202314471A (zh) 儲存裝置及其操作方法
US20170115925A1 (en) Valid data merging method, memory controller and memory storage apparatus
JP2019212103A (ja) メモリシステム

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20170605

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20180905