JP2018156600A - メモリシステムおよび制御方法 - Google Patents

メモリシステムおよび制御方法 Download PDF

Info

Publication number
JP2018156600A
JP2018156600A JP2017055004A JP2017055004A JP2018156600A JP 2018156600 A JP2018156600 A JP 2018156600A JP 2017055004 A JP2017055004 A JP 2017055004A JP 2017055004 A JP2017055004 A JP 2017055004A JP 2018156600 A JP2018156600 A JP 2018156600A
Authority
JP
Japan
Prior art keywords
amount
threshold
memory
garbage collection
free space
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
JP2017055004A
Other languages
English (en)
Other versions
JP6697410B2 (ja
Inventor
弘樹 松平
Hiroki Matsudaira
弘樹 松平
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 JP2017055004A priority Critical patent/JP6697410B2/ja
Priority to US15/700,311 priority patent/US20180276123A1/en
Publication of JP2018156600A publication Critical patent/JP2018156600A/ja
Application granted granted Critical
Publication of JP6697410B2 publication Critical patent/JP6697410B2/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/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/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
    • G06F12/0269Incremental or concurrent garbage collection, e.g. in real-time systems
    • G06F12/0276Generational garbage collection
    • 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/1032Reliability improvement, data loss prevention, degraded operation etc
    • G06F2212/1036Life time enhancement
    • 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/7204Capacity control, e.g. partitioning, end-of-life degradation
    • 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)
  • Memory System (AREA)

Abstract

【課題】利便性の高いメモリシステムを得ること。
【解決手段】一つの実施形態によれば、メモリシステムはホストに接続可能である。前記メモリシステムは、不揮発性のメモリと、メモリコントローラと、を備える。前記メモリは、前記ホストから送られてきたデータが格納される記憶領域を有する。前記メモリコントローラは、前記ホストと前記メモリとの間のデータ転送を実行し、前記記憶領域の空き領域の量が閾値より小さい場合にガベージコレクションを実行する。前記メモリコントローラは、前記閾値が余裕容量を超えないように前記閾値を調整する。
【選択図】図4

Description

本実施形態は、メモリシステムおよび制御方法に関する。
従来、SSD(Solid State Drive)と呼ばれるメモリシステムが知られている。SSDは、NAND型フラッシュメモリ等の不揮発性の半導体メモリを用いたデバイスである。
SSDでは、原則的に、データを上書きできない。また、SSDは、データの消去をブロック単位でしか実行できない。このため、SSDでは、ガベージコレクションと呼ばれる処理を実行することによって、空き領域を有するブロックを生成する。
従来のメモリシステムでは、利便性の点で改良の余地がある。
一つの実施形態は、利便性の高いメモリシステムを得ることを目的とする。
一つの実施形態によれば、メモリシステムはホストに接続可能である。前記メモリシステムは、不揮発性のメモリと、メモリコントローラと、を備える。前記メモリは、前記ホストから送られてきたデータが格納される記憶領域を有する。前記メモリコントローラは、前記ホストと前記メモリとの間のデータ転送を実行し、前記記憶領域の空き領域の量が閾値より小さい場合にガベージコレクションを実行する。前記メモリコントローラは、前記閾値が余裕容量を超えないように前記閾値を調整する。
図1は、第1の実施形態のメモリシステムの構成例を示す図である。 図2は、NANDメモリの構成例を示す図である。 図3は、第1の実施形態のガベージコレクションの開始タイミングを説明するための図である。 図4は、第1の実施形態の閾値Thを設定する動作を説明するフローチャートである。 図5は、第1の実施形態のガベージコレクションの開始および停止の動作を説明するフローチャートである。 図6は、第2の実施形態のガベージコレクションの開始タイミングを説明するための図である。
以下に添付図面を参照して、実施形態にかかるメモリシステムおよび制御方法を詳細に説明する。なお、これらの実施形態により本発明が限定されるものではない。
(第1の実施形態)
図1は、第1の実施形態のメモリシステムの構成例を示す図である。メモリシステム1は、ホスト(Host)2と所定の通信インタフェースで接続される。ホスト2は、例えばパーソナルコンピュータ、携帯情報端末、またはサーバなどが該当する。メモリシステム1は、ホスト2からアクセス要求(リード要求およびライト要求)を受け付けることができる。各アクセス要求は、アクセス先を示す論理アドレスを伴う。論理アドレスは、メモリシステム1がホスト2に提供する論理アドレス空間内の位置を示す。メモリシステム1は、ライト要求とともに、書き込み対象のデータを受け付ける。
メモリシステム1は、NAND型のフラッシュメモリ(NANDメモリ)10と、ホスト2とNANDメモリ10との間のデータ転送を実行するメモリコントローラ20と、を備えている。なお、メモリシステム1は、NANDメモリ10の代わりに任意の不揮発性メモリを具備することができる。例えば、メモリシステム1は、NANDメモリ10の代わりにNOR型のフラッシュメモリを具備することができる。
NANDメモリ10は、1以上のメモリチップ(Chip)11を含む。ここでは一例として、NANDメモリ10は4つのメモリチップ11を含む。各メモリチップ11は、複数のブロックを備える。ブロックは、例えばデータのイレースが実行され得る最小の記憶領域である。ブロックは、複数のページを備える。ページは、例えばデータのリードまたはデータのライトが実行され得る最小の記憶領域である。
図2は、NANDメモリ10の構成例を示す図である。図示するように、NANDメモリ10は、ユーザデータが格納されるユーザ領域12を備える。ユーザデータは、ホスト2から送られてきたデータである。ユーザ領域12は、複数のブロックによって構成される。ユーザ領域12の容量を、ユーザ領域サイズ、と表記する。
なお、メモリコントローラ20は、容量、サイズ、データの量を、任意の単位で扱うことが可能である。メモリコントローラ20は、ページ数、クラスタ数、ブロック数など、任意の単位で、容量、サイズ、およびデータの量を扱うことができる。
図1に説明を戻す。メモリコントローラ20は、CPU(Central Processing Unit)21と、ホストインタフェース(Host I/F)22と、RAM(Random Access Memory)23と、NANDC24と、を備える。
CPU21は、ファームウェアプログラムに基づいてメモリコントローラ20の制御を実行する。ファームウェアプログラムは、例えばNANDメモリ10などの不揮発性メモリに予め格納されており、起動時にNANDメモリ10から読み出されてCPU21によって実行される。
RAM23は、バッファ、あるいはCPU21のワークエリアとして使用されるメモリである。RAM23を構成するメモリの種類は、特定の種類に限定されない。例えば、RAM23は、DRAM(Dynamic Random Access Memory)、SRAM(Static Random Access Memory)、またはこれらの組み合わせによって構成される。
ホストインタフェース22は、ホスト2との間の通信インタフェースの制御を実行する。ホストインタフェース22は、CPU21による制御の下で、ホスト2とRAM23との間のデータ転送を実行する。NANDC24は、CPU21による制御の下で、NANDメモリ10とRAM23との間のデータ転送を実行したりする。
CPU21は、ホスト2からのデータをNANDメモリ10に転送する際には、当該データをいったんRAM23にバッファし、RAM23にバッファされたデータをNANDメモリ10に送る。また、CPU21は、ホスト2からデータのリードが要求された場合には、要求されたデータをNANDメモリ10からRAM23に読み出し、RAM23に読み出されたデータをホスト2に送信する。
CPU21は、データをNANDメモリ10に送る際には、空き領域からそのデータの書き込み位置を決定する。空き領域とは、いずれのデータもプログラムされていない領域であり、新たなデータのプログラムが可能な領域である。CPU21は、当該データの位置を示す論理アドレスに、決定されたプログラム位置をマッピングする。
ここで、当該データ(新しいデータ)の位置を示す論理アドレスに別のデータ(古いデータ)のプログラム位置がマッピングされていた場合、マッピングの更新により、当該古いデータのプログラム位置は、いずれの論理アドレスもマッピングされていない状態となる。その結果、ホスト2は、新しいデータをメモリシステム1からリードすることが可能であるが、古いデータをリードすることができなくなる。論理アドレスにマッピングされている位置に格納されているユーザデータを、有効データと表記する。論理アドレスにマッピングされていない位置に格納されているユーザデータを、無効データと表記する。
このように、ユーザ領域12には、有効データと無効データとが保持され得る。ユーザ領域12が記憶可能な有効データの最大量は、表記容量(user capacity)と呼ばれる。ユーザ領域サイズは、表記容量よりも大きく、ユーザ領域サイズと表記容量との差分は、余裕容量(over-provisioning capacity)と呼ばれる。
なお、余裕容量は、バイト数、ページ数、クラスタ数、ブロック数など、任意の単位で表記され得る。また、余裕容量は、ユーザ領域サイズまたは表記容量など、他の容量に対する割合(パーセント)によっても表記され得る。
空き領域の消費が進むと、空き領域を有するブロックが枯渇する。CPU21は、無効なデータをイレースすることによって、空き領域を有するブロックを生成する。1つのブロックに記憶される全てのデータが無効であることは稀であるため、実際には、CPU21は、ブロック内に残っている有効データを別のブロックに転記(コピー)し、その後、転記元のブロックに記憶される全てのデータをイレースする。この有効データを転記するプロセスは、ガベージコレクションと呼ばれる。有効データの転記によって有効データを全く含まなくなったブロックは、フリーブロックと呼ばれる。
図3は、第1の実施形態のガベージコレクションの開始タイミングを説明するための図である。ここでは説明をわかりやすくするために、シーケンシャルライトが実行される例について説明する。シーケンシャルライトとは、書き込み先として指定される論理アドレスが連続するように複数のライト要求が発行されるアクセスパターンをいう。
図3において、横軸は経過時間を示している。紙面左側の縦軸は、ユーザ領域12内の空き領域の量を示しており、実線は、ユーザ領域12内の空き領域の量の推移を示している。紙面右側の縦軸は、NANDメモリ10に保持される有効データの量を示しており、太い点線は、NANDメモリ10に保持される有効データの量の推移を示している。なお、本図以降の説明では、空き領域とは、いずれのデータもプログラムされていない領域だけでなく、ガベージコレクションによって有効なデータを全く含まなくなった領域を含むものとする。
図3に示されるように、有効データが書き込まれるとともに空き領域の量が減少する。NANDメモリ10に保持される有効データの量が表記容量に達すると、その後は、ライト先として指定される論理アドレスが重複するデータの書き込みが行われる。その結果、有効データの量は表記容量で一定となり、無効データの量のみが増加する。よって、空き領域の量の減少は、有効データの量が表記容量に達した後も続く。
その後、空き領域の量が、第1の実施形態の閾値Thを下回ると、CPU21は、ガベージコレクションを開始する。CPU21は、空き領域の量が閾値Thまで回復した場合、ガベージコレクションを停止する。
図3の例では、余裕容量に0.9を掛けて得られる値が閾値Thとして用いられている。ここで、ユーザ領域12に不良ブロックが発生すると、ユーザ領域サイズが目減りする。表記容量は一定であるので、ユーザ領域サイズの目減りにより、余裕容量が減少する。余裕容量が減少した場合、減少後の余裕容量を用いて閾値Thが再計算される。即ち、減少後の余裕容量に0.9を掛けて得られる値が閾値Thとして用いられる。このように、余裕容量に応じて閾値Thが逐次変更、即ち調整される。よって、閾値Thは、余裕容量を越えることがない。
ここで、仮に、閾値Thとして固定値が使用される場合、余裕容量が減少することにより、閾値Thが余裕容量よりも大きくなる。その場合において有効データの量が表記容量に至ると、空き領域の量が閾値Thまで回復することがないので、常にガベージコレクションが行われ、NANDメモリ10の疲弊が進む。
第1の実施形態では、閾値Thが余裕容量以下の値に維持される。よって、有効データの量が表記容量に至っている場合であっても、ガベージコレクションが停止できなくなることが防止される。
なお、余裕容量に0.9など0より大きく1以下の固定値を掛けて得られる値が閾値Thとして設定されることは、閾値Thを余裕容量を越えない値に維持する方法の一例である。閾値Thが余裕容量を越えない値に維持される限り、閾値Thの設定方法は余裕容量に固定値を掛ける方法だけに限定されない。
また、余裕容量が減少するケースは、不良ブロックが発生するケースだけに限定されない。
例えば、ワードラインを構成する各メモリセルは、n(n≧1)ビット以上の値を保持可能である場合がある。nが1である方式を、SLC(Single Level Cell)モードと表記する。各メモリセルにnビットの値が保持される場合、ワード線WL当たりの記憶容量はnページ分のサイズに等しくなる。nが2であるモードを、MLC(Multi-Level Cell)モードと表記する。nが3以上であるモードがあってもよい。1メモリセルにnビットの値を保持するこれらのモードを、記憶モードと表記する。
例えば、CPU21が、ユーザ領域12を構成する或るブロックの記憶モードを、SLCモードからMLCモードに変更した場合、ユーザ領域12のサイズが1ブロック分増加し、余裕容量も1ブロック分増加する。反対に、CPU21が、ユーザ領域12を構成する或るブロックの記憶モードを、MLCモードからSLCモードに変更した場合、ユーザ領域12のサイズが1ブロック分減少し、余裕容量も1ブロック分減少する。
このように、記憶モードの変更によっても余裕容量が増減し得る。
なお、記憶モードの変更方法は、特定の方法だけに限定されない。CPU21は、フリーブロックをイレースし、イレースされたブロックをデータの書き込み先として設定する際に、そのブロックをSLCモードで動作させるかMLCモードで動作させるかを、任意の方法で決定することができる。SLCモードにおいては、MLCモードに比べ、格納可能なデータの量が減少する反面、データのプログラムにかかる時間がより短い。よって、イレース後のブロックの記憶モードをSLCモードに設定することによって、瞬間的な書き込み速度を向上させることができる。逆に、イレース後のブロックの記憶モードをMLCモードに設定することによって、瞬間的な書き込み速度は遅くなるものの、ガベージコレクションの開始タイミングを遅らせることができる。
なお、CPU21は、空き領域の量が閾値Thより小さい場合、ホスト2とNANDメモリ10との間のユーザデータの転送とガベージコレクションとを並行して実行する。よって、ガベージコレクションの実行が開始された後であっても、本図に示されるように、空き領域の量は減少し得る。CPU21は、ガベージコレクションが開始した後は、ホスト2とNANDメモリ10との間のユーザデータの転送とガベージコレクションとを調停してもよい。また、CPU21は、空き領域の量に応じて調停の比率を変化させてもよい。一例では、空き領域の量が多いほど、CPU21は、ガベージコレクションの実行の比率を小さくする。空き領域の量が少ないほど、CPU21は、ガベージコレクションの実行の比率を大きくする。ガベージコレクションの実行の比率は、空き領域の量に応じて段階的に変化してもよいし、連続的に変化してもよい。
なお、ホスト2とNANDメモリ10との間のユーザデータの転送とガベージコレクションとを並行して実行するとは、ホスト2とNANDメモリ10との間のユーザデータの転送とガベージコレクションとを時分割方式で切り替えながら実行したり、ホスト2とNANDメモリ10との間のユーザデータの転送のうちの一部の処理(例えばホスト2とのユーザデータまたはコマンドの送受信)のバックグラウンドでガベージコレクションを実行したりすることである。
次に、第1の実施形態のメモリシステム1の動作を説明する。図4は、第1の実施形態の閾値Thを設定する動作を説明するフローチャートである。
まず、CPU21は、閾値Thを設定するタイミングに至ったか否かを判定する(S101)。閾値Thを設定するタイミングに至っていない場合(S101、No)、CPU21は、S101の処理を再び実行する。
閾値Thを設定するタイミングは、任意に設定され得る。一例では、CPU21は、前回に閾値Thを設定したタイミングから例えば10msecなどの所定の時間が経過した場合に、閾値Thを設定するタイミングに至ったと判定する。まだ一度も閾値Thを設定していない場合には、即座に閾値Thを設定するタイミングに至ったと判定する。
別の例では、CPU21は、余裕容量を監視し、余裕容量が変動した場合に、閾値Thを設定するタイミングに至ったと判定する。
閾値Thを設定するタイミングに至った場合(S101、Yes)、CPU21は、余裕容量を取得する(S102)。
余裕容量の取得方法は、特定の方法に限定されない。一例では、CPU21は、余裕容量を常時監視する。CPU21は、余裕容量を例えばRAM23などに記憶し、不良ブロックが発生した場合、記憶している余裕容量から不良ブロック分の記憶容量を減算する。このように、CPU21は、余裕容量を常時記憶し、S102では、記憶している余裕容量を読み出す。
別の例では、S102において、CPU21は、ユーザ領域12に割り当てられたブロックの数から不良ブロックの数を減算することによって、余裕容量を演算する。
S102に続いて、CPU21は、余裕容量に、定数αを乗算し、得られた値を閾値Thとして設定する(S103)。そして、CPU21は、S101の処理を再び実行する。なお、定数αは、0より大きくかつ1以下の値である。
図5は、第1の実施形態のガベージコレクションの開始および停止の動作を説明するフローチャートである。
CPU21は、空き領域の量が閾値Thより小さいか否かを判定する(S201)。空き領域の量が閾値Thより小さくない場合(S201、No)、CPU21は、S201の処理を再び実行する。
空き領域の量が閾値Thより小さい場合(S201、Yes)、CPU21は、ガベージコレクションを開始する(S202)。そして、CPU21は、空き領域の量が閾値Thより小さいか否かを再び判定する(S203)。空き領域の量が閾値Thより小さい場合(S203、Yes)、CPU21は、S203の処理を再び実行する。
空き領域の量が閾値Thより小さくない場合(S203、No)、CPU21は、ガベージコレクションを停止する(S204)。そして、CPU21は、S201の処理を再び実行する。
なお、本図の例では、空き領域の量が閾値Thと等しい場合の処理は、上記に限定されない。例えばS201において空き領域の量が閾値Thと等しいと判断された場合には、S202の処理が実行されてもよい。S203において空き領域の量が閾値Thと等しいと判断された場合、S204の処理に進まなくてもよい。
以上述べたように、第1の実施形態によれば、CPU21は、ユーザ領域12の空き領域の量が閾値Thより小さい場合にガベージコレクションを実行する。また、CPU21は、閾値Thが余裕容量を超えないように閾値Thを調整する。調整するとは、逐次変更することである。
このように、余裕容量が変動しても閾値Thが余裕容量を超えないので、有効データの量が表記容量に至っている場合であってもガベージコレクションが停止できなくなることが防止されるので、NANDメモリ10の疲弊の進行が抑制される。その結果、メモリシステム1の寿命が延命され、メモリシステム1の利便性が向上する。
また、CPU21は、余裕容量に0より大きく1以下の固定値を乗算し、乗算によって得られた値を閾値Thとして設定する。
これにより、余裕容量を超えない閾値Thを簡単なアルゴリズムで求めることが可能となる。
また、CPU21は、ユーザ領域12の空き領域の量が閾値Thより小さい場合に、ホスト2とNANDメモリ10との間のデータ転送とガベージコレクションとを並行して実行する。そして、CPU21は、ユーザ領域12の空き領域の量が小さいほどガベージコレクションの実行比率を大きくし、ユーザ領域12の空き領域の量が大きいほどガベージコレクションの実行比率を小さくする。
これにより、ガベージコレクションの開始の際にホスト2に対する応答性能が急落することが抑制される。
なお、CPU21は、ガベージコレクションの実行比率を段階的に変化させてもよいし、連続的に変化させてもよい。
なお、CPU21は、ユーザ領域12の空き領域の量が閾値Thより大きい場合にはガベージコレクションを実行しない。
(第2の実施形態)
第2の実施形態のメモリシステム1の動作は、CPU21が、余裕容量に代えて、ユーザ領域サイズから有効データの量を減算して得られる量を用いて閾値Thを演算する点を除き、第1の実施形態と同様である。第2の実施形態では、ユーザ領域サイズから有効データの量を減算して得られる量に応じて閾値Thを設定する。
図6は、第2の実施形態のガベージコレクションの開始タイミングを説明するための図である。本図において、横軸は経過時間を示している。紙面左側の縦軸は、ユーザ領域12内の空き領域の量を示しており、実線は、ユーザ領域12内の空き領域の量の推移を示している。紙面右側の縦軸は、NANDメモリ10に保持される有効データの量を示しており、太い点線は、NANDメモリ10に保持される有効データの量の推移を示している。
ユーザ領域サイズは、第1の実施形態と同様に、変動し得る。
また、有効データの量は、変動し得る。例えば、有効データの量は、ホスト2からの書き込みによって増加する。また、有効データの量は、トリムによって減少し得る。トリムとは、NANDメモリ10内の位置への論理アドレスのマッピングを解消することである。トリムは、ホスト2からの要求(例えばトリム要求)に応じて実行される。
本図の例では、ユーザ領域サイズから有効データの量を減算して得られる量に対して0.9を乗じて得られる値が閾値Thとして設定される。よって、ユーザ領域サイズおよび有効データの量が変動したとしても、閾値Thの値は、ユーザ領域サイズから有効データの量を減算して得られる量を超えることがない。
上述のように閾値Thが設定されることにより、例えば余裕容量が表記容量を下回っている場合であっても、有効データの量が表記容量より少なければ、メモリシステム1は、ガベージコレクションを実行したり停止したりしながらホスト2とNANDメモリ10との間のデータ転送を継続することができる。
なお、有効データの量が表記容量に達している場合、ユーザ領域サイズから有効データの量を減算して得られる量は、余裕容量と一致する。よって、メモリシステム1の挙動は第1の実施形態と同じになる。即ち、有効データの量が表記容量に至っている場合であっても、ガベージコレクションが停止できなくなることが防止される。
なお、ユーザ領域サイズから有効データの量を減算して得られる量に0.9など0より大きく1以下の固定値を掛けて得られる値が閾値Thとして設定されることは、閾値Thをユーザ領域サイズから有効データの量を減算して得られる量を越えない値に維持する方法の一例である。閾値Thがユーザ領域サイズから有効データの量を減算して得られる量を越えない値に維持される限り、閾値Thの設定方法は余裕容量に固定値を掛ける方法だけに限定されない。
以上述べたように、第2の実施形態によれば、CPU21は、ユーザ領域12の空き領域の量が閾値Thより小さい場合にガベージコレクションを実行する。また、CPU21は、閾値Thがユーザ領域サイズから有効データの量を減算して得られる量を超えないように閾値Thを調整する。
よって、余裕容量が表記容量を下回っている場合であっても、有効データの量が表記容量より少なければ、メモリシステム1を使用することが可能である。即ち、メモリシステム1の利便性が向上する。
また、有効データの量が表記容量に至った場合であっても、ガベージコレクションが停止できなくなることが防止されるので、NANDメモリ10の疲弊の進行が抑制される。その結果、メモリシステム1の寿命が延命され、メモリシステム1の利便性が向上する。
また、CPU21は、ユーザ領域サイズから有効データの量を減算して得られる量に0より大きく1以下の固定値を乗算し、乗算によって得られた値を閾値Thとして設定する。
これにより、ユーザ領域サイズから有効データの量を減算して得られる量を超えない閾値Thを簡単なアルゴリズムで求めることが可能となる。
また、CPU21は、ユーザ領域12の空き領域の量が閾値Thより小さい場合に、ホスト2とNANDメモリ10との間のデータ転送とガベージコレクションとを並行して実行し、ユーザ領域12の空き領域の量が小さいほどガベージコレクションの実行比率が大きくなるように、ガベージコレクションの実行比率を段階的または連続的に変化させてもよい。
これにより、ガベージコレクションの開始の際にホスト2に対する応答性能が急落することが抑制される。
なお、CPU21は、ユーザ領域12の空き領域の量が閾値Thより大きい場合にはガベージコレクションを実行しない。
なお、以上の実施形態において、図4および図5に例示された動作はCPU21がファームウェアを実行することによって実現する、として説明した。図4および図5に例示された動作の一部または全部は、ハードウェア回路によって実現されてもよい。例えば、メモリコントローラ20は、FPGA(field-programmable gate array)またはASIC(application specific integrated circuit)を備え、CPU21の機能のうちの一部または全部は、FPGAまたはASICによって実現されてもよい。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
1 メモリシステム、2 ホスト、10 NANDメモリ、11 メモリチップ、12 ユーザ領域、20 メモリコントローラ、21 CPU、22 ホストインタフェース、23 RAM、24 NANDC。

Claims (11)

  1. ホストに接続可能なメモリシステムであって、
    前記ホストから送られてきたデータが格納される記憶領域を有する不揮発性のメモリと、
    前記ホストと前記メモリとの間のデータ転送を実行し、前記記憶領域の空き領域の量が閾値より小さい場合にガベージコレクションを実行し、前記閾値が余裕容量を超えないように前記閾値を調整する、メモリコントローラと、
    を備えることを特徴とするメモリシステム。
  2. 前記メモリコントローラは、前記余裕容量に0より大きく1以下の固定値を乗算し、乗算によって得られた値を前記閾値として設定する、
    ことを特徴とする請求項1に記載のメモリシステム。
  3. 前記メモリコントローラは、前記記憶領域の空き領域の量が前記閾値より小さい場合に前記データ転送と前記ガベージコレクションとを並行して実行し、前記記憶領域の空き領域の量が小さいほど前記ガベージコレクションの実行比率を大きくし、前記記憶領域の空き領域の量が大きいほど前記ガベージコレクションの実行比率を小さくする、
    ことを特徴とする請求項1に記載のメモリシステム。
  4. 前記メモリコントローラは、前記記憶領域の空き領域の量に応じて前記ガベージコレクションの実行比率を段階的または連続的に変化させる、
    ことを特徴とする請求項3に記載のメモリシステム。
  5. 前記メモリコントローラは、前記記憶領域の空き領域の量が前記閾値より大きい場合に前記ガベージコレクションを実行しない、
    ことを特徴とする請求項1に記載のメモリシステム。
  6. ホストに接続可能なメモリシステムであって、
    前記ホストから送られてきたデータが格納される記憶領域を有する不揮発性のメモリと、
    前記ホストと前記メモリとの間のデータ転送を実行し、前記記憶領域の空き領域の量が閾値より小さい場合にガベージコレクションを実行し、前記閾値が前記記憶領域の容量から前記記憶領域に格納された有効データの量である第1量を減算して得られる第2量を超えないように前記閾値を調整する、メモリコントローラと、
    を備えることを特徴とするメモリシステム。
  7. 前記メモリコントローラは、前記第2量に0より大きく1以下の固定値を乗算し、乗算によって得られた値を前記閾値として設定する、
    ことを特徴とする請求項6に記載のメモリシステム。
  8. 前記メモリコントローラは、前記記憶領域の空き領域の量が前記閾値より小さい場合に前記データ転送と前記ガベージコレクションとを並行して実行し、前記記憶領域の空き領域の量が小さいほど前記ガベージコレクションの実行比率を大きくし、前記記憶領域の空き領域の量が大きいほど前記ガベージコレクションの実行比率を小さくする、
    ことを特徴とする請求項6に記載のメモリシステム。
  9. 前記メモリコントローラは、前記ガベージコレクションの実行比率を段階的または連続的に変化させる、
    ことを特徴とする請求項8に記載のメモリシステム。
  10. 前記メモリコントローラは、前記記憶領域の空き領域の量が前記閾値より大きい場合に前記ガベージコレクションを実行しない、
    ことを特徴とする請求項6に記載のメモリシステム。
  11. ホストから送られてきたデータが格納される記憶領域を有する不揮発性のメモリを制御するメモリコントローラによる制御方法であって、
    前記ホストと前記メモリとの間のデータ転送を実行し、
    前記記憶領域の空き領域の量が閾値より小さい場合にガベージコレクションを実行し、
    前記閾値が余裕容量を超えないように前記閾値を調整する、
    を備えることを特徴とする制御方法。
JP2017055004A 2017-03-21 2017-03-21 メモリシステムおよび制御方法 Active JP6697410B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2017055004A JP6697410B2 (ja) 2017-03-21 2017-03-21 メモリシステムおよび制御方法
US15/700,311 US20180276123A1 (en) 2017-03-21 2017-09-11 Memory system and control method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017055004A JP6697410B2 (ja) 2017-03-21 2017-03-21 メモリシステムおよび制御方法

Publications (2)

Publication Number Publication Date
JP2018156600A true JP2018156600A (ja) 2018-10-04
JP6697410B2 JP6697410B2 (ja) 2020-05-20

Family

ID=63582643

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017055004A Active JP6697410B2 (ja) 2017-03-21 2017-03-21 メモリシステムおよび制御方法

Country Status (2)

Country Link
US (1) US20180276123A1 (ja)
JP (1) JP6697410B2 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021064333A (ja) * 2019-10-17 2021-04-22 キオクシア株式会社 メモリシステムおよびガベッジコレクション制御方法
US11321001B2 (en) 2019-04-17 2022-05-03 Canon Kabushiki Kaisha Information processing apparatus equipped with storage using flash memory, control method therefor, and storage medium
US20220197629A1 (en) * 2020-12-23 2022-06-23 Canon Kabushiki Kaisha Processing apparatus, apparatus, system, and method

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180093152A (ko) * 2017-02-09 2018-08-21 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
KR20200085513A (ko) 2019-01-07 2020-07-15 에스케이하이닉스 주식회사 데이터 저장 장치 및 동작 방법, 이를 포함하는 스토리지 시스템
KR20200114009A (ko) * 2019-03-27 2020-10-07 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법
US11579794B2 (en) * 2021-01-13 2023-02-14 EMC IP Holding Company LLC Garbage collection based on cloud storage capacity
CN112988068B (zh) * 2021-03-10 2023-03-10 深圳宏芯宇电子股份有限公司 存储器控制方法、存储器存储装置及存储器控制器

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06222985A (ja) * 1993-01-26 1994-08-12 Oki Electric Ind Co Ltd メモリ制御装置
JP2011192260A (ja) * 2010-02-16 2011-09-29 Toshiba Corp 半導体記憶装置
JP2014225197A (ja) * 2013-05-17 2014-12-04 学校法人 中央大学 データ記憶システムおよびその制御方法
JP2016136393A (ja) * 2015-01-23 2016-07-28 株式会社東芝 メモリシステム

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8713268B2 (en) * 2010-08-05 2014-04-29 Ut-Battelle, Llc Coordinated garbage collection for raid array of solid state disks
US8601311B2 (en) * 2010-12-14 2013-12-03 Western Digital Technologies, Inc. System and method for using over-provisioned data capacity to maintain a data redundancy scheme in a solid state memory
US9158670B1 (en) * 2011-06-30 2015-10-13 Western Digital Technologies, Inc. System and method for dynamically adjusting garbage collection policies in solid-state memory
US9158700B2 (en) * 2012-01-20 2015-10-13 Seagate Technology Llc Storing cached data in over-provisioned memory in response to power loss
US8799561B2 (en) * 2012-07-27 2014-08-05 International Business Machines Corporation Valid page threshold based garbage collection for solid state drive
US9141532B2 (en) * 2012-12-26 2015-09-22 Western Digital Technologies, Inc. Dynamic overprovisioning for data storage systems

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06222985A (ja) * 1993-01-26 1994-08-12 Oki Electric Ind Co Ltd メモリ制御装置
JP2011192260A (ja) * 2010-02-16 2011-09-29 Toshiba Corp 半導体記憶装置
JP2014225197A (ja) * 2013-05-17 2014-12-04 学校法人 中央大学 データ記憶システムおよびその制御方法
JP2016136393A (ja) * 2015-01-23 2016-07-28 株式会社東芝 メモリシステム

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11321001B2 (en) 2019-04-17 2022-05-03 Canon Kabushiki Kaisha Information processing apparatus equipped with storage using flash memory, control method therefor, and storage medium
JP2021064333A (ja) * 2019-10-17 2021-04-22 キオクシア株式会社 メモリシステムおよびガベッジコレクション制御方法
JP7467064B2 (ja) 2019-10-17 2024-04-15 キオクシア株式会社 メモリシステムおよびガベッジコレクション制御方法
US20220197629A1 (en) * 2020-12-23 2022-06-23 Canon Kabushiki Kaisha Processing apparatus, apparatus, system, and method

Also Published As

Publication number Publication date
US20180276123A1 (en) 2018-09-27
JP6697410B2 (ja) 2020-05-20

Similar Documents

Publication Publication Date Title
JP6697410B2 (ja) メモリシステムおよび制御方法
US11355197B2 (en) Memory system with nonvolatile cache and control method thereof
US11880602B2 (en) Data writing method and storage device
US11237769B2 (en) Memory system and method of controlling nonvolatile memory
US11372753B2 (en) Memory system and method
US20190391760A1 (en) Memory system
JP5443384B2 (ja) ホスト書き込み動作とキャッシュフラッシングとのバランスをとるための方法およびシステム
US20230161492A1 (en) Storage device having a controller configured to select modes as write modes based on received instructions, storage system, and control method
US10229049B2 (en) Storage system that performs host-initiated garbage collection
US10466908B2 (en) Memory system that buffers data before writing to nonvolatile memory
US11436136B2 (en) Memory system including non-volatile buffer and control method thereof
US20100082917A1 (en) Solid state storage system and method of controlling solid state storage system using a multi-plane method and an interleaving method
JP6139381B2 (ja) メモリシステムおよび方法
US10310766B2 (en) Memory system and data relocating method
US20160313921A1 (en) Memory device that controls timing of receiving write data from a host
JP2009099149A (ja) 適応ハイブリッド密度メモリ記憶装置の制御方法、及び適応ハイブリッド密度メモリ記憶装置
KR20100097456A (ko) 메모리 시스템 및 그것의 플래시 변화 계층의 주소 할당 방법
US11755217B2 (en) Memory system and method of controlling nonvolatile memory
US8671257B2 (en) Memory system having multiple channels and method of generating read commands for compaction in memory system
US20190228827A1 (en) Dynamic Management of a NAND Flash Memory
US20230091792A1 (en) Memory system and method of controlling nonvolatile memory
JP2019148913A (ja) メモリシステム
KR20180089140A (ko) 데이터 저장 장치
US20210216451A1 (en) Cache media management

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

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190308

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190917

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190911

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20191118

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: 20200407

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200424

R150 Certificate of patent or registration of utility model

Ref document number: 6697410

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150