JP6139381B2 - メモリシステムおよび方法 - Google Patents

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

Info

Publication number
JP6139381B2
JP6139381B2 JP2013228593A JP2013228593A JP6139381B2 JP 6139381 B2 JP6139381 B2 JP 6139381B2 JP 2013228593 A JP2013228593 A JP 2013228593A JP 2013228593 A JP2013228593 A JP 2013228593A JP 6139381 B2 JP6139381 B2 JP 6139381B2
Authority
JP
Japan
Prior art keywords
block
blocks
mode
data
written
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.)
Active
Application number
JP2013228593A
Other languages
English (en)
Other versions
JP2015088121A (ja
Inventor
菅野 伸一
伸一 菅野
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.)
Toshiba Corp
Original Assignee
Toshiba 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 Corp filed Critical Toshiba Corp
Priority to JP2013228593A priority Critical patent/JP6139381B2/ja
Priority to US14/206,605 priority patent/US20150127886A1/en
Publication of JP2015088121A publication Critical patent/JP2015088121A/ja
Application granted granted Critical
Publication of JP6139381B2 publication Critical patent/JP6139381B2/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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7207Details relating to flash memory management management of metadata or control data

Landscapes

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

Description

本発明の実施形態は、メモリシステムおよび方法に関する。
NANDフラッシュメモリの容量を大きくする技術として多値記録(MLC:Multi −Level Cell)方式がある。一方近年では、書込みの高速化または信頼性向上のため、MLC方式のフラッシュメモリに対して擬似的に2値記録(SLC:Single−Level Cell)方式で書き込みを行う場合がある。SLC方式(以下、SLCモードという)では、記録単位である1つのセルに1ビットが記録されるのに対し、MLC方式(以下、MLCモードという)では、1つのセルにNビット(N>1)を記録することができる。したがって、例えば2ビット記録のフラッシュメモリでは、1つのセルが4値を表すことができ、3ビット記録のフラッシュメモリでは、1つのセルが8値を表すことができる。
このような同じ物理的記憶領域(セル)で記憶する情報量が比較的多いフラッシュメモリは、同じ物理的記憶領域(セル)で記憶する情報量が比較的少ないフラッシュメモリよりも面積あるいは体積あたりの記録容量を大きくでき、また、記録容量あたりのコストを抑えられるというメリットがある。一方、同じ記憶領域で比較的記憶する情報量が少ないフラッシュメモリは、同じ記憶領域で比較的記憶する情報量が多いフラッシュメモリに比べ、書込みのアクセス時間が短く、また、信頼性が高いというメリットがある。
特許第5066241号公報 特開2012−33002号公報
本発明の一つの実施形態は、書込み時間の高速化と書込み可能容量の大容量化を実現したメモリシステムを提供することを目的とする。
本発明の一つの実施形態によれば、メモリシステムは、不揮発性のメモリと、コントローラとを備える。メモリは、第1モードでデータが書き込まれる複数の第1ブロックおよび第1モードまたは第1モードよりもメモリセル当たりの記憶容量が大きい第2モードでデータが書き込まれる複数の第2ブロックを備える。複数の第1ブロックは、有効データを記憶していない第3ブロックを備え、複数の第2ブロックは、有効データを記憶していない第4ブロックを備える。コントローラは、ホストから書き込み要求されたデータを、第3ブロックの数が第1のしきい値よりも大きい場合には第3ブロックに書込み、第3ブロックの数が第1のしきい値よりも小さい場合には第4ブロックに書き込む。
図1は、第1の実施形態のメモリシステムの動作の概要を示す図である。 図2は、第1の実施形態のメモリシステムの動作の概要を示す図である。 図3は、第1の実施形態のメモリシステムの動作の概要を示す図である。 図4は、第1の実施形態のメモリシステムを搭載可能な、情報処理装置の一例を示す概観図である。 図5は、第1の実施形態のメモリシステムの構成を示す図である。 図6は、ホスト機器からデータの書込み要求があった際の第1の実施形態のメモリシステムの動作を示すフローチャートである。 図7は、割当て処理を説明するフローチャートである。 図8は、第1転記処理を説明するフローチャートである。 図9は、第2転記処理を説明するフローチャートである。 図10は、ホスト機器から連続してデータ書込みが要求された場合の書込み性能の推移を示す図である。 図11は、第2の実施形態のバッファメモリ部のメモリ構成を示す図である。 図12は、ホスト機器からデータの書込み要求があった際の第2の実施形態のメモリシステムの動作を示すフローチャートである。
以下に添付図面を参照して、実施形態にかかるメモリシステムおよび方法を詳細に説明する。なお、これらの実施形態により本発明が限定されるものではない。
(第1の実施形態)
第1の実施形態で使用するNANDフラッシュメモリは、例えば、データ書込みの動作モードを変更可能なフラッシュメモリ112である。動作モードとしては、第1モードと第2モードとを用いる。第1モードは、第2モードよりも同一の記憶領域に書込む情報量が少ない(つまり、第2モードは、第1モードよりも同一の記憶領域に書込む情報量が多い)。例えば、第2モードは、第1モードよりも1つのセルに書込めるビット数が大きなモードである。さらに詳細例としては、第1モードは、SLCモードもしくはMLCモードである。第2モードは、第1モードよりも1つのセルに書込めるビット数が大きなMLCモードである。以下の説明では、第1モードをSLCモードとし、第2モードをMLCモードとして説明する。ただし、MLCモードは、1つに限らず、複数であってもよい。すなわち、4値モードと8値モードまたはそれ以上の記録値のモードとで変更可能であってもよい。
フラッシュメモリ112に限らず、1つのNANDフラッシュメモリチップの記憶領域は、複数のブロックで構成されている。ブロックとは、所定の単位の記憶領域であり、データの消去単位である。したがって、あるブロックへ新たにデータを書込む際、その前に、そのブロック内のデータを一括して消去する必要がある。
各ブロックは、複数のページから構成される。データの書込みと読出しは、ページ単位で行われる。データを書込むページの順序には規則がある。このため、ブロック単位でデータ消去後、特定のページ順序でデータをブロックに書込む必要がある。すなわち、ブロックにデータを書込んだ後は、ブロック内のデータを消去せずに特定のページだけを上書きすることや、ブロックのデータを消去後であってもブロック内でランダムのページにデータを書込むことはできない。
また、各NANDフラッシュメモリの動作モードは、ブロック毎に独立して設定することが可能である。ただし、1ブロック内での各ページの動作モードが同じである必要がある。このため、ページ単位で動作モードを切り替えることはできない。すなわち、あるブロックに対してページ書込みを行った後は、その後、ブロック内データの一括消去をするまでの間、そのブロックの動作モードを切り替えることができない。
各動作モードでは、ブロックに対して書込めるデータ量が異なる。言い換えれば、ブロックの容量(以下、ブロック容量という)が動作モードに応じて変化する。具体的には、各ページのページサイズは同じで、ページ数が変化する。例えば2ビット/セル記録方式のフラッシュメモリの場合、4値モードのMLCブロックに対して2値モードのSLCブロックでは、ページ数およびブロック容量が1/2倍となる。
第1の実施形態では、図1〜図3に示すように、フラッシュメモリ112は、第1モードでのみ使用されることが設定されているブロックからなる第1ブロック群と、第1モードと第2モードとの何れかで切り替えて使用されるブロックからなる第2ブロック群と、を備える。第1ブロック群を構成するブロックの数は、固定されている。第1ブロック群は、有効データが格納されていない第1フリーブロックB_free1と、第1モードで書込まれた有効データを保持する第1SLCブロックB_SLC1と、を備えている。第2ブロック群は、有効データが格納されていいない第2フリーブロックB_free2と、第1モードで書込まれた有効データを保持する第2SLCブロックB_SLC2と、第2モードで書込まれた有効データを保持するMLCブロックB_MLCと、を備える。
また、各ブロックは、グループに分類されて管理される。第1フリーブロックB_free1は、第1フリーブロック群として管理され、第1SLCブロックB_SLC1は、第1SLCブロック群として管理される。第2フリーブロックB_free2は、第2フリーブロック群として管理され、第2SLCブロックB_SLC2は、第2SLCブロック群として管理され、MLCブロックB_MLCは、MLCブロック群として管理される。
第1の実施形態において、図1に示すように、ホスト機器からデータD1の書込みが要求されると(S11)、そのデータD1は、新規データ書込み用のブロックとして割当てられた第1フリーブロックB_free1に(S12)、SLCモードで書込まれる。データD1が書込まれた新規データ書込ブロックB_D1は、第1SLCブロック群に登録される(S13)。この結果、第1フリーブロック群で管理される第1フリーブロックB_free1の数が1つ減少し、代わりに、第1SLCブロック群で管理される第1SLCブロックB_SLC1の数が1つ増加する。第1フリーブロックB_free1に対するSLCモードでのデータ書込みは、第1フリーブロック群において管理される第1フリーブロックB_free1の数が、予め設定されたしきい値Taより少なくなるまで実行される。
第1フリーブロック群において管理される第1フリーブロックB_free1の数がしきい値Taよりも少ない場合においては、図2に示すように、ホスト機器からデータD2の書込みが要求されると(S21)、そのデータD2は、新規データ書込み用のブロックとして割当てられた第2フリーブロックB_free2に(S22)、SLCモードで書込まれる。データD2が書込まれた新規データ書込ブロックB_D2は、第2SLCブロック群に登録される(S23)。第2フリーブロック群で管理される第2フリーブロックB_free2の数が1つ減少し、代わりに、第2SLCブロック群で管理される第2SLCブロックB_SLC2の数が1つ増加する。第2フリーブロックB_free2に対するSLCモードでのデータ書込みは、第2フリーブロック群において管理される第2フリーブロックB_free2の数が予め設定されたしきい値Tbより大きく、かつ、第2SLCブロック群において管理される第2SLCブロックB_SLC2の数が予め設定されたしきい値Tcよりも小さい場合に、実行される。
第2フリーブロック群において管理される第2フリーブロックB_free2の数が予め設定されたしきい値Tbより小さいか、または、第2SLCブロック群において管理される第2SLCブロックB_SLC2の数が予め設定されたしきい値Tcよりも大きい場合においては、図3に示すように、ホスト機器からデータD3の書込みが要求されると(S31)、そのデータD3は、新規データ書込み用のブロックとして割当てられた第2フリーブロックB_free2に(S32)、MLCモードで書込まれる。データD3が書込まれた新規データ書込ブロックB_MLCは、MLCブロック群に登録される(S33)。第2フリーブロック群で管理される第2フリーブロックB_free2の数が1つ減少し、代わりに、MLCブロック群で管理されるMLCブロックB_MLCの数が1つ増加する。
図4は、第1の実施形態のメモリシステムを搭載可能な、情報処理装置の一例を示す概観図である。図4に例示されるパーソナルコンピュータ10は、主として、本体11と、表示ユニット12とから構成される。本体11は、たとえば、筐体15、キーボード装置16、ポインティングデバイスであるタッチパッド17、メモリカード19などが着脱可能なカードスロットやUSB(Universal Serial Bus)などの外部インタフェース18、メイン回路基板、およびSSD(Solid State Drive)であるメモリシステム1を備える。
メイン回路基板には、CPU(Central Processing Unit)やROM(Read Only Memory)やRAM(Random Access Memory)やノースブリッジやサウスブリッジなどの主要部品が搭載される。本体11は、その他にも、ODD(Optical Disk Drive)ユニットや各種外部インタフェースなどを備えてもよい。
表示ユニット12は、ディスプレイハウジング13と、このディスプレイハウジング13に収容された表示装置14と、を備える。なお、図4では、所謂ノート型パーソナルコンピュータを例に挙げたが、これに限定されるものではない。すなわち、第1の実施形態にかかるメモリシステムは、フラッシュメモリをストレージとして搭載または装着可能なあらゆるコンピュータに対して適用することが可能である。
図4において、メモリシステム1は、記録媒体として書き換え可能な不揮発性メモリを用いた記憶装置である。このメモリシステム1は、パーソナルコンピュータ10に内蔵されても、外部インタフェース18を介してパーソナルコンピュータ10に外付けされてもよい。以下に、第1の実施形態によるメモリシステム1を、図面を参照して詳細に説明する。
図5に示すように、メモリシステム1は、大別して、コントローラ部100、不揮発性メモリ部110、バッファメモリ部120、および、インタフェース部130を備える。各部100〜130は、共通バスまたは専用線等の、信号線140を介して相互に接続され得る。また、信号線140には、パーソナルコンピュータまたはワークステーションなど、不揮発性メモリ部110へのデータの書込み/読出しを要求するホスト機器150も接続され得る。
インタフェース部130は、信号線140を介してホスト機器150と通信する。このインタフェース部130は、ホスト機器150からリード、ライト、フラッシュ、データ削除等のコマンドを受信し、このコマンド受信をコントローラ部100に通知する。また、インタフェース部130は、コントローラ部100からの指示に従い、ホスト機器150との間でデータを送受信する。
バッファメモリ部120には、ランダムアクセス性が高く高速なメモリ、例えばSRAMまたはDRAM等が用いられる。不揮発性メモリである必要はない。バッファメモリ部120は、インタフェース部130がホスト機器150との間で送受信したデータや、不揮発性メモリ部110に対して読出し/書込みを行うデータを一時的に格納する。また、バッファメモリ部120は、データ以外にも、各種管理用の情報を格納してもよい。
不揮発性メモリ部110は、1つ以上のフラッシュメモリ112およびNANDコントローラ111から構成される。フラッシュメモリ112は、たとえばNANDフラッシュメモリである。1つのフラッシュメモリ112は、1つのチップで構成されてもよい。通常、不揮発性メモリ部110の総記憶容量は、表記容量(ホスト機器に対して提供する最大容量)よりも大きな容量である必要がある。そこで不揮発性メモリ部110は、総記憶容量に応じて複数のフラッシュメモリ112を搭載し得る。また、NANDコントローラ111は、複数のフラッシュメモリ112に対して並列にデータ転送が可能であるとよい。これは、たとえば1つのフラッシュメモリ112ではSSDとして要求されるデータ転送性能を満たせない場合に有効である。
図5に戻り説明する。コントローラ部100は、ユーザデータの管理や各部の制御を行う機能を備える。コントローラ部100は、これらの機能が回路として組み込まれたSoC(System on a Chip)であってもよい。また、コントローラ部100は、ハードウェアとしての汎用プロセッサがこれらの機能を具現するためのソフトウェアを実行することで実現されてもよい。
コントローラ部100は、その機能ブロックとして、アドレス変換テーブル記憶部101と、ブロック管理部102と、読出コマンド処理部104と、書込コマンド処理部105と、削除コマンド処理部106と、ブロック数削減処理部107と、を備える。
アドレス変換テーブル記憶部101は、ホスト機器150から指定される論理アドレスとメモリシステム1内でのデータの記録位置(物理アドレス)とのマッピングを保持するアドレス変換テーブル101Aを記憶する。ある論理アドレスのデータに関して、ホスト機器150からの書込み若しくは削除、または、メモリシステム1内での転記があると、アドレス変換テーブル101Aの論理アドレスのマッピングが更新される。この結果、新しい記録位置のデータが有効データとなり、古い記録位置にあるデータは無効データとなる。アドレス変換テーブル101Aによるマッピングの単位は、例えばブロックよりも小さい単位である。アドレス変換テーブル101Aによるマッピングの単位は、例えばページサイズであってよい。
ブロック管理部102は、ブロックを分類して管理するためのブロック群を管理する。各ブロックは、第1ブロック群または第2ブロック群のいずれかに属する。各ブロックが第1ブロック群または第2ブロック群のいずれに属するかは、予め設定され、固定されている。第1ブロック群に属する各ブロックは、第1ブロック設定情報102Aに登録されている。第2ブロック群に属する各ブロックは、第2ブロック設定情報102Bに登録されている。ブロック管理部102は、第1ブロック群に属する複数のブロックのうちの、有効データを記憶していないブロック(第1フリーブロック)を第1フリーブロック群、SLCモードで書込まれたデータを記憶しているブロック(第1SLCブロック)を第1SLCブロック群に、夫々登録する。また、ブロック管理部102は、第2ブロック群に属する複数のブロックのうちの、有効データを記憶していないブロック(第2フリーブロック)を第2フリーブロック群、SLCモードで書込まれたデータを記憶しているブロック(第2SLCブロック)を第2SLCブロック群、MLCモードで書込まれたデータ(MLCブロック)を記憶しているブロックをMLCブロック群に、それぞれ登録する。ブロック管理部102は、各ブロック群の管理情報として、各ブロック群に含まれるブロックの情報(例えば物理アドレス)とブロック数とを保持する。具体的には、第1フリーブロックは第1フリーブロック管理情報102Cに、第1SLCブロックは第1SLCブロック管理情報102Dに、第2フリーブロックは第2フリーブロック管理情報102Eに、第2SLCブロックは第2SLCブロック管理情報102Fに、MLCブロックはMLCブロック管理情報102Gに、夫々登録される。
読出コマンド処理部104は、インタフェース部130から読出しコマンド受信の通知を受けると、読出しコマンドで指定された論理アドレスに対応する不揮発性メモリ部110内の記録位置をアドレス変換テーブル101Aから検索し、その記録位置に記録されたデータをバッファメモリ部120に読み出す。これにより、バッファメモリ部120には、読出しコマンドで指定された範囲のデータが一時的に格納される。その後、読出しコマンド処理部104は、バッファメモリ部120に一時的に格納されたデータをホスト機器150に送信するようにインタフェース部130を制御する。
書込コマンド処理部105は、インタフェース部130から書込みコマンド受信の通知を受けると、バッファメモリ部120上に空き領域を確保するとともに、ホスト機器150からデータを受信するようにインタフェース部130を制御する。その後、バッファメモリ部120に十分な量のデータが蓄積されると、新規データ書込み用のブロックにバッファメモリ部120内のデータを書込む。その後、書込コマンド処理部105は、書込んだデータの論理アドレスに対応する記録位置をアドレス変換テーブル101Aに登録することで、マッピングを更新する。なお、書込コマンド処理部105は、ブロック管理部102から第1フリーブロックまたは第2フリーブロックを新規データ書込み用のブロックとして取得し、この新規データ書込み用のブロックに書込みを実行する。
削除コマンド処理部106は、インタフェース部130から削除コマンド(例えば、トリムコマンド)受信の通知を受けると、アドレス変換テーブル101Aに対して、指定された論理アドレスに対応する記録位置のデータを無効化するように、マッピングを更新する。
ブロック数削減処理部107は、有効データを格納する使用ブロックのうち、1つ以上の使用ブロック(以下、これを転記元ブロックという)を選択し、選択した転記元ブロック中の有効データをフリーブロックに転記する。
ブロック数削減処理部107による転記の開始タイミングは、次の通りである。即ち、ブロック数削減処理部107は、書込コマンド処理部105がブロック管理部102から第1フリーブロックを新規データ書込み用のブロックとして取得した結果、残りの第1フリーブロック数がしきい値Tdを下回る場合に、転記を開始することができる(第1転記処理)。なお、しきい値Tdは、しきい値Taよりも大きい予め設定された値である。また、ブロック数削減処理部107は、インタフェース部130がホスト機器150と通信中であるか非通信中であるかを監視し、インタフェース部130が非通信中の状態となってからの経過時間を計測する。そして、ブロック数削減処理部107は、非通信中の状態となってからの経過時間が所定時間よりも大きくなったとき、転記を開始する(第2転記処理)。
ブロック数削減処理部107は、有効データの転記の結果、フリーブロックとなった転記元ブロック、すなわち有効データ量が‘0’となった転記元ブロックを新たなフリーブロックとして回収する。転記したデータについては、転記先の論理アドレスに対応する記録位置をアドレス変換テーブル101Aに登録することでマッピングを更新する。なお、フリーブロックとして登録される際に、ブロック内の無効データを消去してもよいし、フリーブロックとして登録される際にはブロック内の無効データを消去せず、次回の書込みで使用ブロックとして割り当てられ、最初のページに書き込みを行う直前までの間に消去を行うこととしてもよい。
図6は、ホスト機器150からデータの書込み要求があった際の動作を示すフローチャートである。なお、図6に示す動作では、初期状態として、新規データ書込みブロックが割当て済みであるとする。
書込コマンド処理部105は、まず、インタフェース部130へホスト機器150からの新規データの書込みコマンドが入力されるのを待機する(S101、No)。書込みコマンドを受けると(S101、Yes)、書込コマンド処理部105は、バッファメモリ部120上にデータ格納領域を確保し(S102)、続いて、ホスト機器150から送信された新規データをバッファメモリ部120に確保しておいたデータ格納領域に格納する(S103)。
次に、書込コマンド処理部105は、バッファメモリ部120に格納された未書込みの新規データのデータ量を確認し(S104)、データ量がページサイズ未満である場合(S104、No)、S101の処理を再び実行する。一方、データ量がページサイズ以上である場合(S104、Yes)、書込コマンド処理部105は、バッファメモリ部120内の未書込みデータからページサイズ分のデータを選択し、この選択されたデータを不揮発性メモリ部110内の割当てておいた新規データ書込みブロックに、S110の割当て処理によって設定された動作モードで、ページ書込みする(S105)。
なお、S110の割当て処理において新規データ書込みブロックが第1SLCブロック群または第2SLCブロック群に登録されている場合には、SLCモードが動作モードとして設定される。S110の割当て処理において新規データ書込みブロックがMLCブロック群に登録されている場合には、MLCモードが動作モードとして設定される。S110の割当て処理については後ほど詳述する。
S105の処理に続いて、書込コマンド処理部105は、書込んだデータの論理アドレスと記録位置(物理アドレス)とをアドレス変換テーブル101Aに登録することで(S106)、マッピングを更新する。そして、書込コマンド処理部105は、バッファメモリ部120における書込んだデータが格納されていた領域を解放する(S107)。
次に、書込コマンド処理部105は、新規データ書込みブロックにデータが書込まれていないページ、すなわち未書込みページが存在するか否かを判断する(S108)。新規データ書込みブロックに未書込みページが存在する場合(S108、No)、書込コマンド処理部105は、S104の処理を再び実行する。
一方、未書込みページが存在しない場合(S108、Yes)、すなわち新規データ書込みブロックの最大ページまでデータの書込みが完了していたら、書込コマンド処理部105は、新規データ書込みブロックを、第1SLCブロック管理情報102D、第2SLCブロック管理情報102F、またはMLCブロック管理情報102Gに登録する登録処理を実行する(S109)。ここで、新規データ書込みブロックが第1ブロック群に属している場合には、書込コマンド処理部105は、新規データ書込みブロックを第1SLCブロック管理情報102Dに登録する。新規データ書込みブロックが第2ブロック群に属し、かつ、動作モードがSLCモードに設定されている場合には、書込コマンド処理部105は、新規データ書込みブロックを第2SLCブロック管理情報102Fに登録する。新規データ書込みブロックが第2ブロック群に属し、かつ、動作モードがMLCモードに設定されている場合には、書込コマンド処理部105は、新規データ書込みブロックをMLCブロック管理情報102Gに登録する。
次に、書込みコマンド処理部105は、次の新規データ書込みブロックの割当て処理を実行する(S110)。S110の処理の後、書込みコマンド処理部105は、S101の処理を再び実行する。
図7は、S110の割当て処理を説明するフローチャートである。
まず、書込コマンド処理部105は、第1フリーブロック管理情報102Cを参照することによって、第1フリーブロックの数がしきい値Taよりも大きいか否かを判断する(S121)。第1フリーブロックの数がしきい値Taよりも大きい場合(S121、Yes)、書込コマンド処理部105は、第1フリーブロック管理情報102Cにおいて第1フリーブロックを1つ取得して、この第1フリーブロックを次の新規データ書込みブロックに割当てる(S122)。そして、書込コマンド処理部105は、動作モードをSLCモードに設定して(S123)、割当て処理を終了する。
第1フリーブロックの数がしきい値Taよりも小さい場合(S121、No)、書込コマンド処理部105は、第2フリーブロック管理情報102Eにおいて第2フリーブロックを1つ取得して、この第2フリーブロックを次の新規データ書込みブロックに割当てる(S124)。そして、書込コマンド処理部105は、第2フリーブロック管理情報102Eを参照することによって、第2フリーブロックの数がしきい値Tbよりも小さいか否かを判断する(S125)。第2フリーブロックの数がしきい値Tbよりも大きい場合(S125、No)、書込コマンド処理部105は、第2SLCブロック群管理情報102Dを参照することによって、第2SLCブロックの数がしきい値Tcよりも小さいか否かを判断する(S126)。第2SLCブロックの数がしきい値Tcよりも小さい場合(S126、Yes)、書込コマンド処理部105は、動作モードをSLCモードに設定して(S127)、割当て処理を終了する。第2フリーブロックの数がしきい値Tbよりも小さい場合(S125、Yes)、または、第2SLCブロックの数がしきい値Tcよりも大きい場合(S126、No)、書込コマンド処理部105は、動作モードをMLCモードに設定して(S128)、割当て処理を終了する。
図8は、第1転記処理を説明するフローチャートである。
ブロック数削減処理部107は、第1フリーブロック管理情報102Cを定期的に参照することによって、第1フリーブロックの数がしきい値Tdよりも小さくなったか否かを判断する(S131)。第1フリーブロックの数がしきい値Tdよりも大きい場合(S131、No)、ブロック数削減処理部107は、S131の処理を再び実行する。第1フリーブロックの数がしきい値Tdよりも小さい場合(S131、Yes)、ブロック数削減処理部107は、第1SLCブロック群から転記元ブロックを選択する(S132)。
転記元ブロックの選択方法は任意である。例えば、ブロック数削減処理部107は、有効データが最も少ない第1SLCブロックを転記元ブロックとして選択してよい。また、ブロック数削減処理部107は、書込みが最も古い第1SLCブロックを転記元ブロックとして選択してよい。また、ブロック数削減処理部107は、S132の処理において転記元ブロックを複数選択してもよい。
次に、ブロック数削減処理部107は、第2フリーブロック群から転記先ブロックを選択する(S133)。S132の処理において複数の転記元ブロックが選択されている場合には、複数の転記元ブロックに格納されている有効ブロックの合計の容量に応じた数の転記先ブロックが選択される。
次に、ブロック数削減処理部107は、バッファメモリ部120上に少なくとも1ページ分のデータ格納領域を確保し、続いて、選択されたM個の転記元ブロックに格納されている1ページ分の有効データをバッファメモリ部120に確保されたデータ格納領域に読み出す(S134)。そして、ブロック数削減処理部107は、バッファメモリ部120上に読み出した有効データを転記先ブロックとして選択されているフリーブロックにMLCモードでページ書込みする(S135)。
次に、ブロック数削減処理部107は、転記元ブロックの全ての有効データを転記し終えたか否かを判定し(S136)、転記し終えていない場合(S136、No)、S134の処理を再び実行する。一方、転記し終えている場合(S136、Yes)、ブロック数削減処理部107は、転記した有効データについて、論理アドレスに対応する転記先の記録位置(物理アドレス)をアドレス変換テーブル101Aに登録することで、マッピングを更新する(S137)。これにより、転記元ブロック内の有効データが全て無効データとなる。続いて、ブロック数削減処理部107は、データ転記済みの転記元ブロックを第1フリーブロック管理情報102Cに登録するとともに(S138)、新たに有効データが格納された転記先ブロックをMLCブロック管理情報102Gに登録する(S139)。その後、ブロック数削減処理部107は、S131の処理を再び実行する。
図9は、第2転記処理を説明するフローチャートである。
ブロック数削減処理部107は、インタフェース部130を監視しており、インタフェース部130が非動作中の時間が所定時間を越えたか否かを判断する(S141)。インタフェース部130が非動作中の時間が所定時間を越えていない場合(S141、No)、ブロック数削減処理部107は、S141の処理を再び実行する。
インタフェース部130が非動作中の時間が所定時間を越えた場合(S141、Yes)、ブロック数削減処理部107は、第1SLCブロック群、第2SLCブロック群、またはMLCブロック群から転記元ブロックを選択する(S142)。ここで、ブロック数削減処理部107は、第1SLCブロック群、第2SLCブロック群、およびMLCブロック群のうちの何れから転記元ブロックを選択してもよい。例えば、ブロック数削減処理部107は、第1SLCブロック群、第2SLCブロック群、およびMLCブロック群に分類されているブロックうちの、有効データが最も少ないブロックまたは書込みが最も古いブロックを転記元ブロックとして選択してもよい。また、ブロック数削減処理部107は、第2SLCブロックおよびMLCブロックと、第1SLCブロックとでは、第2SLCブロックおよびMLCブロックを優先的に転記先ブロックとして選択してもよい。また、ブロック数削減処理部107は、第2SLCブロックとMLCブロックとでは、第2SLCブロックを優先的に転記先ブロックとして選択してもよい。なお、ブロック数削減処理部107は、S142の処理において転記元ブロックを複数選択してもよい。
次に、ブロック数削減処理部107は、第2フリーブロック群から転記先ブロックを選択する(S143)。S142の処理において複数の転記元ブロックが選択されている場合には、複数の転記元ブロックに格納されている有効ブロックの合計の容量に応じた数の転記先ブロックが選択される。
次に、ブロック数削減処理部107は、バッファメモリ部120上に少なくとも1ページ分のデータ格納領域を確保し、続いて、選択されたM個の転記元ブロックに格納されている1ページ分の有効データをバッファメモリ部120に確保されたデータ格納領域に読み出す(S144)。そして、ブロック数削減処理部107は、バッファメモリ部120上に読み出した有効データを転記先ブロックとして選択されているフリーブロックにMLCモードでページ書込みする(S145)。
次に、ブロック数削減処理部107は、転記元ブロックの全ての有効データを転記し終えたか否かを判定し(S146)、転記し終えていない場合(S146、No)、S144の処理を再び実行する。一方、転記し終えている場合(S146、Yes)、ブロック数削減処理部107は、転記した有効データについて、論理アドレスに対応する転記先の記録位置(物理アドレス)をアドレス変換テーブル101Aに登録することで、マッピングを更新する(S147)。
次に、ブロック数削減処理部107は、データ転記済みの転記元ブロックを第1フリーブロック管理情報102Cまたは第2フリーブロック管理情報102Eに登録するとともに(S148)、新たに有効データが格納された転記先ブロックをMLCブロック管理情報102Gに登録する(S149)。その後、ブロック数削減処理部107は、S141の処理を再び実行する。
なお、MLCモードにおいて1つのセルにNビットの値が記録される場合には、MLCブロックのブロック容量は、第1SLCブロックおよび第2SLCブロックのブロック容量のN倍の容量を有する。したがって、しきい値Tcをいかに設定するかに応じて不揮発性メモリ部110の総容量が決まる。しきい値Tcは、第2ブロック群に属するブロックのうちのTc個のブロックの全てにSLCモードで書込まれ、かつ、第2ブロック群に属するブロックのうちの他のどのブロックもSLCモードで書込まれないケースを仮定し、そのケースにおける不揮発性メモリ部110の総容量が、表記容量よりも大きくなるように(条件1)、しきい値Tcが設定されるとよい。
図10は、出荷状態のメモリシステム1に対してホスト機器150から連続してデータ書込みが要求された場合の書込み性能の推移を示す図である。図10において、縦軸は、書込み速度、横軸は、書込み済みのデータ量を示す。また、実線は、条件1を満たすようにしきい値Tc(Tc1)が設定された場合の性能を示し、一点鎖線は、条件1を満たさないようにしきい値Tc(Tc2)が設定された場合の性能を示す。Tc1は、Tc2よりも小さい。MLCモードでの書込み速度は、SLCモードでの書込み速度よりも遅い。したがって、しきい値TcにTc1が設定された場合には、SLCモードで書込めるブロックが、しきい値TcにTc2が設定された場合よりも早く枯渇する。そして、SLCモードで書込めるブロックが枯渇したタイミングで、書込み速度が、SLCモードでの書込み速度からMLCモードでの書込み速度まで低下する。これに対し、しきい値TcにTc2が設定された場合には、しきい値TcにTc1が設定された場合よりも長くSLCモードでの書込み速度を維持することができるが、書込み可能な容量が表記容量に至らないために第1SLCブロックに書込まれた有効データをMLCモードで転記する必要が生じる。転記は、コントローラ部100のリソースを消費するために、転記中はMLCモードでの書込み速度よりも書込み性能が低下する。したがって、出荷状態のメモリシステム1に対して連続したデータ書込みが行われる場合には、一点鎖線に示すように、書込み速度のアンダーシュートが発生する。即ち、条件1を満たすようにしきい値Tcが設定されることによって、連続してデータ書込みが要求された場合において、書込み速度のアンダーシュートの発生を抑制することができるようになる。
以上述べたように、第1の実施形態によれば、メモリシステム1は、不揮発性メモリ部110と、コントローラ部100とを備える。不揮発性メモリ部110は、第1モードでデータが書き込まれる複数の第1ブロックと、第1モードまたは第2モードでデータが書き込まれる複数の第2ブロックとを備える。複数の第1ブロックは、有効データを記憶していない第1フリーブロックを備える。複数の第2ブロックは、有効データを記憶していない第2フリーブロックを備える。コントローラ部100は、ホスト機器150から書き込み要求されたデータを、第1フリーブロックの数がしきい値Taよりも大きい場合には第1フリーブロックに書込み、第1フリーブロックの数がしきい値Taよりも小さい場合には第2フリーブロックに書き込む。第1フリーブロックの数が余っている場合には書込み速度が高速なSLCモードでの書込みが実行され、第1フリーブロックの数が少なくなってきたとき、SLCモードでもMLCモードでも書込みが可能に設定されている第2フリーブロックに対する書込みが実行されるので、書込み時間の高速化と書込み可能容量の大容量化とが実現される。
また、コントローラ部100は、第2フリーブロックの数がしきい値Tbよりも小さい場合には、ホスト機器150から書き込み要求されたデータを第2フリーブロックに第2モードで書き込む。第2フリーブロックの数が少なくなってきた場合には体積当たりの記憶容量が大きいモードで書込みが実行されるので、書込みが進んでも書込み可能な容量の枯渇を防止することができる。
また、コントローラ部100は、第2SLCブロックの数がしきい値Tcよりも大きい場合には、ホスト機器150から書込み要求されたデータを第2フリーブロックに第2モードで書き込む。第2SLCブロックの数が多い場合には体積当たりの記憶容量が大きいモードで書込みが実行されるので、書込みが進んでも書込み可能な容量の枯渇を防止することができる。
また、コントローラ部100は、第1フリーブロックの数がしきい値Taよりも大きいしきい値Tdよりも小さい場合、第1転記処理を実行する。第1転記処理は、第1SLCブロックのうちの少なくとも1つを選択し、選択した第1SLCブロックに記憶されている有効データを第2フリーブロックに第2モードで転記するとともに選択した第1SLCブロックに記憶されている有効データを無効化する処理である。これにより、書込みが進んでも書込み可能な容量の枯渇を防止することができる。
なお、コントローラ部100は、第1転記処理において、転記対象の有効データを第2フリーブロックに第1モードで転記するようにしてもよい。
また、コントローラ部100は、インタフェース部130が非通信中となってからの経過時間を計測し、経過時間が所定時間を越えた場合、第2転記処理を開始する。第2転記処理は、第1SLCブロック、第2SLCブロックまたはMLCブロックのうちの少なくとも1つを選択し、選択したブロックに記憶されている有効データを第2フリーブロックに転記するとともに選択したブロックに記憶されている有効データを無効化する、処理である。これにより、書込みが進んでフリーブロックが少なくなった場合に、フリーブロックを生成することができるようになる。
なお、コントローラ部100は、転記対象の有効データを第1フリーブロックに書込んでもよい。また、第1SLCブロックに記憶されている有効データは第1転記処理による転記対象となるので、第2転記処理においては第1SLCブロックを転記元ブロックに選択されなくてもよい。
なお、コントローラ部100は、第1フリーブロックの数、第2フリーブロックの数、または第1フリーブロックの数と第2フリーブロックの数の合計が、しきい値Teよりも小さく、かつ、インタフェース部130が非通信中となってからの経過時間が所定時間を越えた場合、第2転記処理を開始してもよい。
(第2の実施形態)
第2の実施形態においては、メモリシステム1は、ホスト機器150からの書込み要求に付帯された情報(付帯情報)に応じて、書込み要求されたデータを第1ブロック群に書込むか、第2ブロック群に書込むかを決めることができる。また、メモリシステム1は、付帯情報に応じて、第2ブロック群に、SLCモードで書き込むか、MLCモードで書き込むかを決めることができる。なお、付帯情報とは、例えば更新頻度に応じたパラメータであってよい。更新頻度に応じたパラメータは、例えば特許文献2に開示されているように、データの区分(txt領域に配置されたデータ、stack領域に配置されたデータ、heap領域に配置されたデータ、data領域に配置されたデータ)に応じて設定されてもよい。また、メモリシステム1は、更新頻度「高」の旨の付帯情報を伴って書込み要求されたデータを第1ブロック群に、更新頻度「低」の旨の付帯情報を伴って書込み要求されたデータを第2ブロック群に書込んでもよい。また、メモリシステム1は、第2ブロック群に書込む際、更新頻度「高」の旨の付帯情報を伴って書込み要求されたデータをSLCモードで、更新頻度「低」の旨の付帯情報を伴って書込み要求されたデータをMLCモードで書込んでもよい。
第2の実施形態のメモリシステム1の構成を説明する。第2の実施形態においては、メモリシステム1は、付帯情報に応じて書込み先を切り替えることができるように、ブロック群(第1SLCブロック群、第2SLCブロック群、MLCブロック群)毎にメモリ領域がバッファメモリ部120に確保される。図11は、第2の実施形態のバッファメモリ部120のメモリ構成を示す図である。図示するように、バッファメモリ部120には、第1メモリ領域120a、第2メモリ領域120b、および第3メモリ領域120cが確保されている。第1メモリ領域120aは、第1フリーブロックにSLCモードで書込まれるデータが蓄積される。第2メモリ領域120bは、第2フリーブロックにSLCモードで書込まれるデータが蓄積される。第3メモリ領域120cは、第2フリーブロックにMLCモードで書込まれるデータが蓄積される。
図12は、ホスト機器150からデータの書込み要求があった際の動作を示すフローチャートである。なお、図12に示す動作では、初期状態として、新規データ書込みブロックがメモリ領域(第1メモリ領域120a、第2メモリ領域120b、第3メモリ領域120c)毎に個別に割当て済みであるとする。
書込コマンド処理部105は、まず、インタフェース部130へホスト機器150からの新規データの書込みコマンドが入力されるのを待機する(S151、No)。書込みコマンドを受けると(S151、Yes)、書込コマンド処理部105は、書込みコマンドの付帯情報に基づいて、書込み先のブロック群と書込み時の動作モードとを選択する(S152)。ここで、書込みコマンド処理部105は、第1SLCブロック群または第2SLCブロック群のうちのどちらを書込み先のブロック群とするかを、付帯情報に基づいて選択することができる。第1ブロックSLC群を選択した場合、書込コマンド処理部105は、書込み時の動作モードとしてSLCモードを選択する。第2ブロックSLC群を選択した場合、書込コマンド処理部105は、書込み時の動作モードとしてSLCモードまたはMLCモードのうちの1つを付帯情報に基づいて選択することができる。
次に、書込コマンド処理部105は、S152において選択された事項(選択事項)に応じたメモリ領域上にデータ格納領域を確保する(S153)。そして、ホスト機器150から送信された新規データをメモリ領域に確保しておいたデータ格納領域に格納し(S154)、そのメモリ領域に格納された未書込みの新規データのデータ量を確認する(S155)。データ量がページサイズ未満である場合(S155、No)、書込コマンド処理部105は、S151の処理を再び実行する。一方、データ量がページサイズ以上である場合(S155、Yes)、書込コマンド処理部105は、メモリ領域内の未書込みデータからページサイズ分のデータを選択し、この選択されたデータを選択事項に対応する新規データ書込みブロックに、選択された動作モードでページ書込みする(S156)。
続いて、書込コマンド処理部105は、書込んだデータの論理アドレスと記録位置(物理アドレス)とをアドレス変換テーブル101Aに登録することで(S157)、マッピングを更新する。そして、書込コマンド処理部105は、メモリ領域における書込んだデータが格納されていた領域を解放する(S158)。
次に、書込コマンド処理部105は、新規データ書込みブロックにデータが書込まれていないページ、すなわち未書込みページが存在するか否かを判断する(S159)。新規データ書込みブロックに未書込みページが存在する場合(S159、No)、書込コマンド処理部105は、S155の処理を再び実行する。
一方、未書込みページが存在しない場合(S159、Yes)、すなわち新規データ書込みブロックの最大ページまでデータの書込みが完了していたら、書込コマンド処理部105は、その新規データ書込みブロックを、第1SLCブロック管理情報102D、第2SLCブロック管理情報102F、またはMLCブロック管理情報102Gのうちの選択事項に応じた管理情報に登録する登録処理を実行する(S160)。
次に、書込みコマンド処理部105は、次の新規データ書込みブロックの割当て処理を実行する(S161)。S161の割当て処理においては、書込みコマンド処理部105は、登録予定のブロック群(第1SLCブロック群、第2SLCブロック群、MLCブロック群)毎に新規データ書込みブロックを割当てる。S161の処理の後、書込みコマンド処理部105は、S151の処理を再び実行する。
このように、第2の実施形態によれば、メモリシステム1は、付帯情報を伴う書込み要求を受信することができる。コントローラ部100は、ホスト機器150から書き込み要求されたデータを、第1ブロック群または第2ブロック群のうちの付帯情報に応じたブロックに書き込む。これにより、ホスト機器150は、更新頻度が高いデータを第1ブロック群にSLCモードで書き込ませ、更新頻度が低いデータを第2ブロック群にSLCモードまたはMLCモードで書き込ませるといった運用が可能となる。
また、コントローラ部100は、ホスト機器150から書き込み要求されたデータを第2ブロック群に書き込む際、SLCモードおよびMLCモードのうちの付帯情報に応じた動作モードで書き込むようにしてもよい。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
1 メモリシステム、10 パーソナルコンピュータ、11 本体、12 表示ユニット、13 ディスプレイハウジング、14 表示装置、15 筐体、16 キーボード装置、17 タッチパッド、18 外部インタフェース、19 メモリカード、100 コントローラ部、101 アドレス変換テーブル記憶部、101A アドレス変換テーブル、102 ブロック管理部、104 読出コマンド処理部、105 書込コマンド処理部、106 削除コマンド処理部、107 ブロック数削減処理部、110 不揮発性メモリ部、110 コントローラ部、111 NANDコントローラ、112 フラッシュメモリ、120 バッファメモリ部、130 インタフェース部、140 信号線、150 ホスト機器。

Claims (20)

  1. 第1モードでデータが書き込まれる複数の第1ブロックおよび前記第1モードまたは前記第1モードよりもメモリセル当たりの記憶容量が大きい第2モードでデータが書き込まれる複数の第2ブロックを備える複数のメモリセルからなる不揮発性のメモリと、
    コントローラと、
    を備え、
    前記複数の第1ブロックは、有効データを記憶していない第3ブロックを備え、
    前記複数の第2ブロックは、有効データを記憶していない第4ブロックを備え、
    前記コントローラは、ホストから書き込み要求されたデータを、
    前記第3ブロックの数が第1のしきい値よりも大きい場合には前記第3ブロックに書込み、
    前記第3ブロックの数が第1のしきい値よりも小さい場合には前記第4ブロックに書き込む、
    ことを特徴とするメモリシステム。
  2. 前記コントローラは、
    前記第4ブロックの数が第2のしきい値よりも小さい場合には、前記ホストから書き込み要求されたデータを、前記第4ブロックに第2モードで書き込む、
    ことを特徴とする請求項1に記載のメモリシステム。
  3. 前記複数の第2ブロックは、第1モードで書き込まれたデータを記憶する第5ブロックを備え、
    前記コントローラは、前記第5ブロックの数が第3のしきい値よりも大きい場合には、前記ホストから書込み要求されたデータを、前記第4ブロックに第2モードで書き込む、
    ことを特徴とする請求項1または請求項2に記載のメモリシステム。
  4. 前記複数の第1ブロックは、第1モードで書き込まれたデータを記憶する第6ブロックを備え、
    前記コントローラは、前記第3ブロックの数が前記第1のしきい値よりも大きい第4のしきい値よりも小さい場合、第1の転記処理を実行し、
    前記第1の転記処理は、前記第6ブロックのうちの少なくとも1つを選択し、前記選択した第6ブロックに記憶されている有効データを前記第4ブロックに転記するとともに前記選択した第6ブロックに記憶されている有効データを無効化する、処理である、
    ことを特徴とする請求項3に記載のメモリシステム。
  5. 前記コントローラは、
    前記選択した第6ブロックに記憶されている有効データを転記する際、前記選択した第6ブロックに記憶されている有効データを前記第4ブロックに第2モードで書き込む、
    ことを特徴とする請求項4に記載のメモリシステム。
  6. 前記ホストと通信するためのインタフェース部をさらに備え、
    前記コントローラは、前記インタフェース部が非通信中となってからの経過時間を計測し、前記経過時間が所定時間を越えた場合、第2の転記処理を開始し、
    前記第2の転記処理は、前記第5ブロックまたは前記6ブロックのうちの少なくとも1つを選択し、前記選択したブロックに記憶されている有効データを前記第3ブロックまたは前記第4ブロックに転記するとともに前記選択したブロックに記憶されている有効データを無効化する、処理である、
    ことを特徴とする請求項4または5に記載のメモリシステム。
  7. 前記コントローラは、前記第3ブロックの数、前記第4ブロックの数、または前記第3ブロックの数と前記第4ブロックの数の合計が、第5のしきい値よりも小さい場合、前記第2の転記処理を開始する、
    ことを特徴とする請求項6に記載のメモリシステム。
  8. 前記第5ブロックの数が前記第3のしきい値と等しい場合の前記メモリの総容量が前記ホストに対する表示容量より大きくなるように前記第3のしきい値は予め設定される、
    ことを特徴とする請求項3に記載のメモリシステム。
  9. 第1モードでデータが書き込まれる複数の第1ブロックおよび前記第1モードまたは前記第1モードよりもメモリセル当たりの記憶容量が大きい第2モードでデータが書き込まれる複数の第2ブロックを備える不揮発性のメモリと、
    コントローラと、
    ホストからの書込み要求を受信するインタフェース部と、
    を備え、
    前記書込み要求は、付帯情報を備え、
    前記複数の第1ブロックは、有効データを記憶していない第3ブロックを備え、
    前記複数の第2ブロックは、有効データを記憶していない第4ブロックを備え、
    前記コントローラは、ホストから書き込み要求されたデータを、前記第3ブロックまたは前記第4ブロックのうちの前記付帯情報に応じたブロックに書き込む、
    ことを特徴とするメモリシステム。
  10. 前記コントローラは、前記ホストから書き込み要求されたデータを前記第4ブロックに書き込む際、前記第1モードまたは前記第2モードのうちの前記付帯情報に応じたモードで書き込む、
    ことを特徴とする請求項9に記載のメモリシステム。
  11. 複数のブロックを備える不揮発性のメモリをコントローラが制御する方法であって、前記複数のブロックは、第1モードでデータが書き込まれる複数の第1ブロックと、前記第1モードまたは前記第1モードよりもメモリセル当たりの記憶容量が大きい第2モードでデータが書き込まれる複数の第2ブロックとを備え、
    前記コントローラが、ホストからデータの書き込み要求を受信する受信ステップと、
    前記コントローラが、前記複数の第1ブロックのうちの有効データを記憶していない第3ブロックの数と第1のしきい値とを比較する第1比較ステップと、
    前記第3ブロックの数が前記第1のしきい値よりも大きい場合には、前記コントローラが、前記ホストから書込み要求されたデータを前記第3ブロックに書込み、前記第3ブロックの数が前記第1のしきい値よりも小さい場合には、前記コントローラが、前記ホストから書込み要求されたデータを前記複数の第2ブロックのうちの有効データを記憶していない第4ブロックに書き込む、第1書込みステップと、
    を備えることを特徴とする方法。
  12. 前記第1書込みステップは、
    前記コントローラが、前記第4ブロックの数と第2のしきい値とを比較する第2ステップと、
    前記第4ブロックの数が第2のしきい値よりも小さい場合には、前記コントローラが、前記ホストから書き込み要求されたデータを前記第4ブロックに第2モードで書き込む、第2書込みステップと、
    を備えることを特徴とする請求項11に記載の方法。
  13. 前記複数の第2ブロックは、第1モードで書き込まれたデータを記憶する第5ブロックを備え、
    前記第1書込みステップは、
    前記コントローラが、前記第5ブロックの数と第3のしきい値とを比較する第3ステップと、
    前記第5ブロックの数が第3のしきい値よりも大きい場合には、前記コントローラが、前記ホストから書込み要求されたデータを前記第4ブロックに第2モードで書き込む、第3書込みステップと、
    を備えることを特徴とする請求項11または請求項12に記載の方法。
  14. 前記複数の第1ブロックは、第1モードで書き込まれたデータを記憶する第6ブロックを備え、
    前記コントローラが、前記第3ブロックの数と前記第1のしきい値よりも大きい第4のしきい値とを比較する第4比較ステップと、
    前記第3ブロックの数が前記第4のしきい値よりも小さい場合、前記コントローラが、前記第6ブロックのうちの少なくとも1つを選択し、前記選択した第6ブロックに記憶されている有効データを前記第4ブロックに転記するとともに前記選択した第6ブロックに記憶されている有効データを無効化する、第1転送ステップと、
    をさらに備えることを特徴とする請求項13に記載の方法。
  15. 前記第1転送ステップは、
    前記コントローラが、前記選択した第6ブロックに記憶されている有効データを転記する際、前記選択した第6ブロックに記憶されている有効データを前記第4ブロックに第2モードで書き込む、第3書込みステップ
    を備えることを特徴とする請求項14に記載の方法。
  16. 前記コントローラが、前記ホストとの間が非通信中となってからの経過時間を計測するとともに前記経過時間と所定時間とを比較する第5比較ステップと、
    前記経過時間が所定時間を越えた場合、前記コントローラが、前記第5ブロックまたは前記6ブロックのうちの少なくとも1つを選択し、前記選択したブロックに記憶されている有効データを前記第3ブロックまたは前記第4ブロックに転記するとともに前記選択したブロックに記憶されている有効データを無効化する、第2転送ステップと、
    をさらに備えることを特徴とする請求項14または請求項15に記載の方法。
  17. 前記コントローラが、前記第3ブロックの数、前記第4ブロックの数、または前記第3ブロックの数および前記第4ブロックの数の合計と第5のしきい値を比較する第6比較ステップをさらに備え、
    前記合計が前記第5のしきい値よりも小さい場合、前記コントローラが前記第2転送ステップを実行する、
    ことを特徴とする請求項16に記載の方法。
  18. 前記第5ブロックの数が前記第3のしきい値と等しい場合の前記メモリの総容量が前記ホストに対する表示容量より大きくなるように前記第3のしきい値は予め設定される、
    ことを特徴とする請求項13に記載の方法。
  19. 複数のブロックを備える不揮発性のメモリをコントローラが制御する方法であって、前記複数のブロックは、第1モードでデータが書き込まれる複数の第1ブロックと、前記第1モードまたは前記第1モードよりもメモリセル当たりの記憶容量が大きい第2モードでデータが書き込まれる複数の第2ブロックとを備え、
    前記コントローラが、ホストからデータの書き込み要求を付帯情報とともに受信する受信ステップと、
    前記コントローラが、前記複数の第1ブロックのうちの有効データを記憶していない第3ブロックと、前記複数の第2ブロックのうちの有効データを記憶していない第4ブロックと、のうちの1つを前記付帯情報に応じて選択する選択ステップと、
    前記コントローラが、前記ホストから書込み要求されたデータを前記選択したブロックに書き込む第1書込みステップと、
    を備えることを特徴とする方法。
  20. 前記第1書込みステップは、
    前記第4ブロックを選択した場合、前記コントローラが、前記第1モードおよび前記第2モードのうちの1つを前記付帯情報に応じて選択する第2選択ステップと、
    前記コントローラが、前記ホストから書き込み要求されたデータを前記選択したモードで前記選択した第4ブロックに書き込む、第2書込みステップと、
    を備えることを特徴とする請求項19に記載の方法。
JP2013228593A 2013-11-01 2013-11-01 メモリシステムおよび方法 Active JP6139381B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2013228593A JP6139381B2 (ja) 2013-11-01 2013-11-01 メモリシステムおよび方法
US14/206,605 US20150127886A1 (en) 2013-11-01 2014-03-12 Memory system and method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013228593A JP6139381B2 (ja) 2013-11-01 2013-11-01 メモリシステムおよび方法

Publications (2)

Publication Number Publication Date
JP2015088121A JP2015088121A (ja) 2015-05-07
JP6139381B2 true JP6139381B2 (ja) 2017-05-31

Family

ID=53007947

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013228593A Active JP6139381B2 (ja) 2013-11-01 2013-11-01 メモリシステムおよび方法

Country Status (2)

Country Link
US (1) US20150127886A1 (ja)
JP (1) JP6139381B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106959818A (zh) * 2016-01-11 2017-07-18 群联电子股份有限公司 数据写入方法、内存控制电路单元与内存储存装置

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7030463B2 (ja) * 2017-09-22 2022-03-07 キオクシア株式会社 メモリシステム
JP2019191909A (ja) 2018-04-25 2019-10-31 東芝メモリ株式会社 メモリシステムおよび制御方法
JP7281585B2 (ja) * 2018-04-25 2023-05-25 キオクシア株式会社 メモリシステム
CN109597571B (zh) * 2018-11-15 2022-02-15 金蝶软件(中国)有限公司 数据存储方法、数据读取方法、装置和计算机设备
JP7095568B2 (ja) * 2018-11-21 2022-07-05 Tdk株式会社 メモリコントローラ及びこれを備えるフラッシュメモリシステム
KR102593541B1 (ko) * 2018-11-29 2023-10-25 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작방법
US11182089B2 (en) 2019-07-01 2021-11-23 International Business Machines.Corporation Adapting memory block pool sizes using hybrid controllers
US11023150B2 (en) 2019-07-01 2021-06-01 International Business Machines Corporation Block mode toggling using hybrid controllers
JP7490469B2 (ja) 2020-06-25 2024-05-27 キオクシア株式会社 ストレージデバイス、ストレージシステム及び制御方法
US20220188242A1 (en) * 2020-12-11 2022-06-16 Micron Technology, Inc. Multi-tier cache for a memory system
JP7451809B2 (ja) 2022-02-17 2024-03-18 キオクシア株式会社 方法

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4410271B2 (ja) * 2007-04-25 2010-02-03 株式会社東芝 メモリ制御装置
US20090043831A1 (en) * 2007-08-11 2009-02-12 Mcm Portfolio Llc Smart Solid State Drive And Method For Handling Critical Files
US8407400B2 (en) * 2008-11-12 2013-03-26 Micron Technology, Inc. Dynamic SLC/MLC blocks allocations for non-volatile memory
US20100169540A1 (en) * 2008-12-30 2010-07-01 Sinclair Alan W Method and apparatus for relocating selected data between flash partitions in a memory device
JP5066241B2 (ja) * 2010-09-24 2012-11-07 株式会社東芝 メモリシステム
US8935459B2 (en) * 2012-03-08 2015-01-13 Apple Inc. Heuristics for programming data in a non-volatile memory

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106959818A (zh) * 2016-01-11 2017-07-18 群联电子股份有限公司 数据写入方法、内存控制电路单元与内存储存装置
CN106959818B (zh) * 2016-01-11 2020-03-31 群联电子股份有限公司 数据写入方法、存储器控制电路单元与存储器储存装置

Also Published As

Publication number Publication date
US20150127886A1 (en) 2015-05-07
JP2015088121A (ja) 2015-05-07

Similar Documents

Publication Publication Date Title
JP6139381B2 (ja) メモリシステムおよび方法
US11893238B2 (en) Method of controlling nonvolatile semiconductor memory
JP5907255B2 (ja) Lsb及びmsbページにおける選択的データ記憶
US11747989B2 (en) Memory system and method for controlling nonvolatile memory
US8174912B2 (en) Systems and methods for circular buffering control in a memory device
US20130212319A1 (en) Memory system and method of controlling memory system
US11216368B2 (en) Memory system for garbage collection using page offsets, invalid offset ratio, sequential ratio, and logical address prediction
US11436136B2 (en) Memory system including non-volatile buffer and control method thereof
US8954656B2 (en) Method and system for reducing mapping table size in a storage device
US10936203B2 (en) Memory storage device and system employing nonvolatile read/write buffers
US11334272B2 (en) Memory system and operating method thereof
US11422930B2 (en) Controller, memory system and data processing system
CN110908595B (zh) 存储装置及信息处理系统
TWI808010B (zh) 資料處理方法及對應之資料儲存裝置
US20240103733A1 (en) Data processing method for efficiently processing data stored in the memory device by splitting data flow and the associated data storage device
EP4287028A1 (en) Storage device providing high purge performance and memory block management method thereof
TW202414223A (zh) 資料處理方法及對應之資料儲存裝置
TW202414222A (zh) 資料處理方法及對應之資料儲存裝置
CN117149052A (zh) 提供高清除性能的存储设备及其存储块管理方法
CN117806533A (zh) 数据处理方法及对应的数据储存装置

Legal Events

Date Code Title Description
RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7421

Effective date: 20151102

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160217

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20161125

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20161213

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20161222

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170427

R151 Written notification of patent or utility model registration

Ref document number: 6139381

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350