JP2012068986A - メモリシステム - Google Patents

メモリシステム Download PDF

Info

Publication number
JP2012068986A
JP2012068986A JP2010214221A JP2010214221A JP2012068986A JP 2012068986 A JP2012068986 A JP 2012068986A JP 2010214221 A JP2010214221 A JP 2010214221A JP 2010214221 A JP2010214221 A JP 2010214221A JP 2012068986 A JP2012068986 A JP 2012068986A
Authority
JP
Japan
Prior art keywords
block
data
storage area
unit
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.)
Granted
Application number
JP2010214221A
Other languages
English (en)
Other versions
JP5066241B2 (ja
Inventor
Hiroshi Yao
浩 矢尾
Shinichi Sugano
伸一 菅野
Kazuhiro Fukutomi
和弘 福冨
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
Priority to JP2010214221A priority Critical patent/JP5066241B2/ja
Application filed by Toshiba Corp filed Critical Toshiba Corp
Priority to US13/038,681 priority patent/US8832357B2/en
Priority to TW100128064A priority patent/TWI446168B/zh
Priority to EP11177759.5A priority patent/EP2439645B1/en
Priority to KR1020110082376A priority patent/KR101329937B1/ko
Priority to CN201110256131.2A priority patent/CN102419735B/zh
Publication of JP2012068986A publication Critical patent/JP2012068986A/ja
Application granted granted Critical
Publication of JP5066241B2 publication Critical patent/JP5066241B2/ja
Priority to US14/467,685 priority patent/US10877664B2/en
Priority to US15/391,184 priority patent/US9910597B2/en
Priority to US15/880,168 priority patent/US10055132B2/en
Priority to US16/044,257 priority patent/US10871900B2/en
Priority to US17/018,956 priority patent/US11216185B2/en
Priority to US17/643,034 priority patent/US11579773B2/en
Priority to US18/155,282 priority patent/US11893238B2/en
Priority to US18/396,352 priority patent/US20240126433A1/en
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
    • 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/0604Improving or facilitating administration, e.g. storage management
    • 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0634Configuration or reconfiguration of storage systems by changing the state or mode of one or more devices
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/21Employing a record carrier using a specific recording technology
    • G06F2212/214Solid state disk
    • 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

Abstract

【課題】SLCフラッシュメモリとMLCフラッシュメモリとのそれぞれのメリットを状況に応じて得る。
【解決手段】実施の形態によるメモリシステム1は、MLCフラッシュメモリ112と、ブロック管理部102と、転記部(107、108および109)と、を備える。MLCフラッシュメモリ112は、SLCモードおよびMLCモードのいずれでもデータの書込みが可能な複数のブロックを含む。ブロック管理部102は、有効データを格納しないブロックをフリーブロックとして管理する。転記部は、ブロック管理部102が管理するフリーブロックの数が所定の閾値Tbf以下である場合、有効データを格納する1つ以上の使用ブロックを転記元ブロックとして選択し、転記元ブロックに格納されている有効データをフリーブロックにMLCモードで転記する。
【選択図】図5

Description

本発明の実施形態は、メモリシステムに関する。
NANDフラッシュメモリの容量を大きくする技術として多値記録(MLC:Multi −Level Cell)方式がある。本開示では、MLC方式のフラッシュメモリをMLCフラッシュメモリといい、2値記録(SLC:Single−Level Cell)方式のフラッシュメモリをSLCフラッシュメモリという。SLC方式(以下、SLCモードという)では、記録単位である1つのセルに1ビットが記録されるのに対し、MLC方式(以下、MLCモードという)では、1つのセルにNビット(N>1)を記録することができる。したがって、例えば2ビット記録のMLCフラッシュメモリでは、1つのセルが4値を表すことができ、3ビット記録のMLCフラッシュメモリでは、1つのセルが8値を表すことができる。
このような同じ記憶領域で比較的記憶する情報量が多いフラッシュメモリは、同じ記憶領域で比較的記憶する情報量が少ないフラッシュメモリよりも体積あたりの記録容量を大きくでき、また、記録容量あたりのコストを抑えられるというメリットがある。一方、同じ記憶領域で比較的記憶する情報量が少ないフラッシュメモリは、同じ記憶領域で比較的記憶する情報量が多いフラッシュメモリに比べ、書込みや読出しのアクセス時間が短く、また、信頼性が高いというメリットがある。
特開2008−276733号公報 特開2010−152778号公報 特開2008−257773号公報
そこで、本発明の実施の形態では、同じ記憶領域で比較的記憶する情報量が少ないフラッシュメモリと同じ記憶領域で比較的記憶する情報量が多いフラッシュメモリとのそれぞれのメリットを状況に応じて得ることができるメモリシステムを開示する。
実施の形態によるメモリシステムは、複数の第1記憶領域を有し、前記複数の第1記憶領域のうち有効データが記憶されていない領域である第2記憶領域と、前記複数の第1記憶領域のうちホストから書き込み要求を受けたデータが書き込まれた領域である第3記憶領域と、前記複数の第1記憶領域のうち前記第3記憶領域に記憶されたデータが書込まれた領域である第4記憶領域とを持つことが可能な不揮発性の半導体メモリと、前記複数の第1記憶領域のうちいずれが前記第2記憶領域であるかを示す情報である第1管理情報を記憶する第1記憶部と、前記複数の第1記憶領域のうちいずれが前記第3記憶領域であるかを示す情報である第2管理情報を記憶する第2記憶部と、前記複数の第1記憶領域のうちいずれが前記第4記憶領域であるかを示す情報である第3管理情報を記憶する第3記憶部と、ホストから書き込み要求を受けたデータである書込要求データを受け付ける第1受付部と、前記第1管理情報に基づいて、1以上の第2記憶領域からいずれか1つを取得する取得部と、前記書込要求データを前記取得部で取得された前記第2記憶領域に第1モードで書込む第1書込部と、前記第1記憶領域の数が第1閾値以下の場合に、前記第2管理情報に基づいて、複数の前記第3記憶領域から1以上の記憶領域を選択するか、または、前記第3管理情報に基づいて、複数の前記第4記憶領域から1以上の記憶領域を選択する選択部と、前記選択部によって選択された前記記憶領域に記憶された有効データを、前記取得部によって取得された前記第2記憶領域に第2モードで書込む第2書込部と、前記第2書込部が書き込んだ場合に、前記選択された記憶領域を前記第2管理情報または前記第3管理情報から削除し、当該選択された記憶領域を前記第1管理情報に追加する管理情報更新部と、ホストからデータの読み出し要求を受ける第2受付部と、前記読み出し要求を受けたデータが前記第3記憶領域に書き込まれている場合は、前記第1モードで読み出し、前記読み出し要求を受けたデータが前記第4記憶領域に書き込まれている場合は、前記第2モードで読み出す読出部と、を有する。前記有効データとは、論理アドレスに対応付けられた物理アドレスに記憶されたデータである。記論理アドレスとは、ホストから指定されたアドレスである。前記物理アドレスとは、半導体メモリの記憶領域でのデータの記憶位置を示す。前記第1モードは、前記第2モードよりも、書込みまたは読み出しが速い。前記第1モードは、前記第2モードよりも、同一記憶領域に書込みされうる情報の最大量が少ない。
実施形態のブロックの使用例を示す図(1)。 実施形態のブロックの使用例を示す図(2)。 実施形態のブロックの使用例を示す図(3)。 実施形態のパーソナルコンピュータの外観図。 実施形態のメモリシステムのブロック図。 実施形態のアドレス変換テーブルのデータ構造例。 実施形態の逆引きテーブルの例。 実施形態のデータ書込時のマッピング更新の説明図(更新前)。 実施形態のデータ書込時のマッピング更新の説明図(更新後)。 実施形態のデータ削除時のマッピング更新の説明図(削除前)。 実施形態のデータ削除時のマッピング更新の説明図(削除後)。 実施形態のデータ転記時のマッピング更新の説明図(転記前)。 実施形態のデータ転記時のマッピング更新の説明図(転記後)。 実施形態のデータ書込み要求時の概略フローチャート。 実施形態の使用ブロック数削減処理の概略フローチャート(1)。 実施形態の使用ブロック数削減処理の概略フローチャート(2)。 実施形態の使用ブロック数削減処理の概略フローチャート(3)。 実施形態の転記元ブロック群選択処理の概略フローチャート(1)。 実施形態の転記元ブロック群選択処理の概略フローチャート(2)。 実施形態の転記元ブロック群選択処理の概略フローチャート(3)。 実施形態のランダムライトのシミュレーション結果。 実施形態のメモリシステムのブロック図。 実施形態の使用ブロック数削減処理実行の概略フローチャート。
以下、例示する実施の形態にかかるメモリシステムについて、図面を参照して詳細に説明する。
まず、実施の形態1にかかるメモリシステム1について、図面を参照して詳細に説明する。図1〜図3は、本実施の形態1にかかるブロックの使用例を示す図である。
本実施の形態1で使用するNANDフラッシュメモリは、データ書込みの動作モードを変更可能なフラッシュメモリ112である。例えば、データ書込みの動作モードを変更可能なMLCフラッシュメモリである。動作モードとしては、第1の動作モードと第2の動作モードとを用いる。第1の動作モードは、第2の動作モードよりも同一の記憶領域に書き込む情報量が少ない(つまり、第2の動作モードは、第1の動作モードよりも同一の記憶領域に書き込む情報量が多い)。例えば、第2の動作モードは、第1の動作モードよりも1つのセルに書き込めるビット数が大きなモードである。さらに詳細例としては、第1の動作モードは、SLCモードもしくはMLCモードである。第2の動作モードは、第1の動作モードよりも1つのセルに書き込めるビット数が大きなMLCモードである。以下の説明では、第1の動作モードをSLCモードとし、第2の動作モードをMLCモードとして説明する。ただし、MLCモードは、1つに限らず、複数であってもよい。すなわち、4値モードと8値モードとで変更可能であってもよい。
MLCフラッシュメモリ112に限らず、1つのNANDフラッシュメモリの記憶領域は、複数のブロック(第1記憶領域)で構成されている。ブロックとは、所定の単位の記憶領域であり、データの消去単位である。したがって、あるブロックへ新たにデータを書込む際、その前に、そのブロック内のデータを一括して消去する必要がある。
各ブロックは、複数のページというから構成される。データの書込みと読出しは、ページ単位で行う。データを書き込むページの順序には規則がある。このため、ブロック単位でデータ消去後、特定のページ順序でデータをブロックに書き込む必要がある。すなわち、ブロックにデータを書き込んだ後は、ブロック内のデータを消去せずに特定のページだけを上書きすることや、ブロックのデータを消去後であってもブロック内でランダムのページにデータを書き込むことはできない。
また、各NANDフラッシュメモリの動作モードは、ブロック毎に独立して設定することが可能である。ただし、1ブロック内での各ページの動作モードが同じである必要がある。このため、ページ単位で動作モードを切り替えることはできない。すなわち、あるブロックに対してページ書込みを行った後は、その後、ブロック内データの一括消去をするまでの間、そのブロックの動作モードを切り替えることができない。
各動作モードでは、ブロックに対して書き込めるデータ量が異なる。言い換えれば、ブロックの容量(以下、ブロック容量という)が動作モードに応じて変化する。具体的には、各ページのページサイズは同じで、ページ数が変化する。例えば2ビット記録方式のMLCフラッシュメモリの場合、4値モードのMLCブロックに対して2値モードのSLCブロックでは、ページ数およびブロック容量が1/2倍となる。
本実施の形態1では、図1〜図3に示すように、ブロックの種類として、有効データが格納されていないフリーブロックB_freeと、有効データが格納されている使用ブロック(第2記憶領域)とが存在する。使用ブロックには、第1の動作モードで書き込まれた有効データを保持するブロックB_slcと、第2の動作モードで書き込まれたデータを保持するブロックB_mlcとが存在する。そこで、ブロックB_slcをSLCブロックB_slc(第3記憶領域)とし、ブロックB_mlcをMLCブロックB_mlc(第4記憶領域)と称する。
また、各ブロックは、グループに分類されて管理される。たとえば、フリーブロックB_freeは、フリーブロック群G_freeに分類されて管理され、SLCブロックB_slcは、SLCブロック群G_slc(第5記憶領域)に分類されて管理され、MLCブロックB_mlcは、MLCブロック群G_mlc(第6記憶領域)に分類されて管理される。
本実施の形態1において、図1に示すように、ホスト機器からデータD1の書込みが要求されると、そのデータD1は、予め新規データ書き込み用のブロックとして割り当てられたフリーブロックB_freeに、SLCモードで書き込まれる。データD1が書き込まれた新規データ書込ブロックB_D1は、SLCブロック群G_slcに登録される。この結果、フリーブロック群G_freeで管理されるフリーブロックB_freeの数が1つ減少し、代わりに、SLCブロック群G_slcで管理されるSLCブロックB_slcが1つ増加する。このSLCモードでのデータ書込みは、SLCブロック群G_slcにおいて管理されるSLCブロックB_slcの総データ容量に制限されることなく行われる。言い換えれば、本実施の形態1では、SLCブロックB_slcの数に上限がなく、可変である。これにより、本実施の形態1では、可変長のSLCバッファが実現される。さらには、本実施の形態1では、総容量がMLCフラッシュメモリの総記憶容量からホスト機器に対して提供する最大容量である表記容量を引算することで得られる余剰容量以上となる数のブロックを、SLCブロックB_slcとして管理することが可能である。ただし、後述するように、フリーブロック群G_freeによって管理されるフリーブロックB_freeの数には、下限が設定されてもよい。
その後、たとえばホスト機器からのデータ書込みによってフリーブロック群G_freeに属するフリーブロックB_freeの数が予め設定しておいた閾値Tbf以下となると、本実施の形態1では、図2に示すように、SLCブロック群G_slcに属するSLCブロックB_slcのいくつかを選択し、これらに有効なデータとして格納されているデータ(以下、有効データという)を予め転記先用のブロックとして割り当てられたフリーブロックB_freeに、MLCモードで書き込む(転記)。この有効データが書き込まれた転記先ブロックB_Dtsは、MLCブロック群G_mlcに登録される。この結果、使用ブロックの数が削減されて、フリーブロックB_freeの数が増加する。ここで、転記対象のSLCブロックB_slcには、ブロック容量に対する有効データ量(有効データ率)の小さいものや、更新頻度の高いデータを格納しないものが選択されるとよい。
その後、データ転記によってMLCブロック群G_mlcに属するMLCブロックB_mlcの数が増加した状態で、フリーブロックB_freeの数が予め設定しておいた閾値Tbf以下となると、本実施の形態1では、図3に示すように、SLCブロック群G_slcとMLCブロック群G_mlcとのいずれかを選択し、これに属するブロックをいくつか選択し、これらの有効データを予め転記先用のブロックとして割り当てられたフリーブロックB_freeに、MLCモードで書き込む(転記)。この有効データが書き込まれた転記先ブロックB_DtsまたはB_Dtmは、MLCブロック群G_mlcに登録される。この結果、使用ブロックの数が削減されて、フリーブロックB_freeの数が増加する。ここで、転記対象の使用ブロックには、ブロック容量に対する有効データ量(有効データ率)の小さいものや、更新頻度の高いデータを格納しないものが選択されるとよい。また、転記対象のブロックには、たとえば同一の動作モードのブロックが選択される。具体的には、SLCブロックB_slc同士、または、MLCブロックB_mlc同士が選択される。
なお、いずれのブロック群が選択されるかは、各ブロック群に属するブロックの総有効データ量や総有効データ率など、種々のパラメータに基づいて決定することが可能である。例えば、図1や図2のように総有効データ量が少ない場合には、ブロック容量の合計が小さくても全てのデータを記録可能なので、SLCブロックB_slcの比率を高くすることが可能である。逆に、図3のように総有効データ量が多くなった場合には、MLCブロックB_mlcの比率を高くしてブロック容量の合計を大きくする必要がある。
更に、ホストから書き込まれるデータのLBA(Logical Block Address)に局所性がある、すなわち特定のLBAの範囲に書込みが集中する場合には、当該データがSLCブロックB_slcからMLCブロックB_mlcに転記される前にホストから上書きされてSLCブロックB_slc上の古いデータが無効データになる確率が高い。このようにSLCブロック群G_slcの総有効データ率が低下した場合にはSLCブロック群G_slcが転記対象として選択されると良い。また例えば、局所性が移動する、すなわち書込みが集中するLBA範囲が別の範囲に移動した直後には、当該データがMLCブロックB_mlcに転記された後にホストから上書されてMLCブロックB_mlc上の古いデータが無効データになる確率が高い。このようにMLCブロック群G_mlcの総有効データ率が低下した場合にはMLCブロック群G_mlcが転記対象として選択されると良い。
ここで、閾値Tbfは、ホスト機器からの効率的なデータアクセス等を鑑みて、実験や経験やシミュレーションによって求められる値である。たとえば閾値Tbfが大きすぎると、ある時点で実際にデータを記録しているブロック数が少なくなり、総有効データ率が高くなるため、転記の効率が悪化する。また、閾値Tbfは、最低でも転記処理で一度に確保するフリーブロック数以上の必要がある。
さらに、データ転記を実行する際のトリガは、閾値Tbfを用いた方法に限定されない。たとえば、定期的にデータ転記を実行してもよいし、ホスト機器からのアクセスがない期間に基づいてデータ転記を実行してもよい。
つぎに、メモリシステム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は、たとえばSATA(Serial ATA)インタフェースであり、信号線140を介してホスト機器150と通信する。ただし、SATAインタフェースに限らず、パラレルATAインタフェースなど、記憶装置に対する種々のインタフェースを適用可能である。このインタフェース部130は、ホスト機器150からリード、ライト、フラッシュ、データ削除等のコマンドを受信し(第1受付部/第2受付部)、このコマンド受信をコントローラ部100に通知する。また、インタフェース部130は、コントローラ部100からの指示に従い、ホスト機器150との間でデータを送受信する。
バッファメモリ部120には、ランダムアクセス性が高く高速なメモリ、例えばSRAMやDRAM等が用いられる。不揮発性メモリである必要はない。バッファメモリ部120は、インタフェース部130がホスト機器150との間で送受信したデータや、不揮発性メモリ部110に対して読出し/書込みを行うデータを一時的に格納する。また、バッファメモリ部120は、データ以外にも、各種管理用の情報を格納してもよい。
不揮発性メモリ部110は、1つ以上のMLCフラッシュメモリ112およびNANDコントローラ111から構成される。MLCフラッシュメモリ112は、たとえばNANDフラッシュメモリである。1つのMLCフラッシュメモリ112は、1つのチップで構成されてもよい。通常、不揮発性メモリ部110の総記憶容量は、表記容量(ホスト機器に対して提供する最大容量)よりも大きな容量である必要がある。そこで不揮発性メモリ部110は、総記憶容量に応じて複数のMLCフラッシュメモリ112を搭載し得る。また、NANDコントローラ111は、複数のMLCフラッシュメモリ112に対して並列にデータ転送が可能であるとよい。これは、たとえば1つのMLCフラッシュメモリ112ではSSDとして要求されるデータ転送性能を満たせない場合に有効である。
図5に戻り説明する。コントローラ部100は、ユーザデータの管理や各部の制御を行う機能を備える。コントローラ部100は、これらの機能が回路として組み込まれたSoC(System on a Chip)であってもよい。また、コントローラ部100は、ハードウェアとしての汎用プロセッサがこれらの機能を具現するためのソフトウェアを実行することで実現されてもよい。
コントローラ部100は、その機能ブロックとして、アドレス変換テーブル記憶部101と、ブロック管理部102と、有効データ量管理部103と、読出コマンド処理部104と、書込コマンド処理部105と、削除コマンド処理部106と、ブロック数削減処理部107、転記元ブロック群選択部108および転記元ブロック選択部109(転記部)と、を備える。
アドレス変換テーブル記憶部101は、ホスト機器150から指定される論理アドレスとメモリシステム1内でのデータの記録位置とのマッピングを保持するアドレス変換テーブル101Aを記憶する。ある論理アドレスのデータに関して、ホスト機器150からの書込み若しくは削除、または、メモリシステム1内での転記があると、アドレス変換テーブル101Aの論理アドレスのマッピングが更新される。この結果、新しい記録位置のデータが有効データとなり、古い記録位置にあるデータは無効データとなる。マッピングの更新時には、各ブロック内の有効データ量の更新が有効データ量管理部103に通知される。
ブロック管理部102は、ブロックを分類して管理するためのブロック群を管理する。ブロックは、有効データを格納するか否かに応じて、フリーブロックと使用ブロックとのいずれかに分類することができる。また、使用ブロックは、そのブロックに対する有効データの書込み動作モード等に応じて、SLCブロックとMLCブロックとのいずれかに分類することできる。ブロック管理部102は、有効データが格納されていないブロックをフリーブロック群に登録し、SLCモードで書き込まれた有効データを格納しているブロックをSLCブロック群、MLCモードで書き込まれた有効データを格納するブロックをMLCブロック群に、それぞれ登録する。ブロック管理部102は、各ブロック群の管理情報として、各ブロック群に含まれるブロックの情報とブロック数とを保持する。なお、フリーブロックの動作モードは未定であり、フリーブロックをSLCブロック群とMLCブロック群とのいずれかに割当てた後に決定される。また、各ブロック群の管理情報は、特定のブロック群に全ブロックが集中して登録されることを可能にするデータ構造を持つ。例えば、全てのブロックがSLCモードで使用された場合であっても、全てのブロックをSLCブロック群に登録可能である。ブロック管理部102は、ブロックがどのブロック群(フリー、SLC、MLC)に属するかの情報を更新する(管理情報更新部)。
有効データ量管理部103は、アドレス変換テーブル101Aから各ブロックの有効データ量の更新通知を受けると、SLCブロック群およびMLCブロック群に含まれるブロックの総有効データ量を算出する。
読出コマンド処理部104は、インタフェース部130から読出しコマンド受信の通知を受けると、読出しコマンドで指定された論理アドレスに対応する不揮発性メモリ部110内の記録位置をアドレス変換テーブル101Aから検索し、その記録位置に記録されたデータをバッファメモリ部120に読み出す(読出部)。これにより、バッファメモリ部120には、読出しコマンドで指定された範囲のデータが一時的に格納される。その後、読出しコマンド処理部104は、バッファメモリ部120に一時的に格納されたデータをホスト機器150に送信するようにインタフェース部130を制御する。
書込コマンド処理部105は、インタフェース部130から書込みコマンド受信の通知を受けると、バッファメモリ部120上に空き領域を確保するとともに、ホスト機器150からデータを受信するようにインタフェース部130を制御する。その後、バッファメモリ部120に十分な量のデータが蓄積されると、新規データ書込み用のブロックにバッファメモリ部120内のデータを書き込む。その後、書込コマンド処理部105は、書き込んだデータの論理アドレスに対応する記録位置をアドレス変換テーブル101Aに登録することで、マッピングを更新する。なお、書込コマンド処理部105は、ブロック管理部102からフリーブロックを新規データ書込み用のブロックとして取得し(取得部)、この新規データ書込み用のブロックをSLCブロックとして使用する(第1書込部)。また、書込コマンド処理部105は、ブロック管理部102からフリーブロックを新規データ書込み用のブロックとして取得した結果、残りのフリーブロック数が所定の閾値を下回る場合には、ブロック数削減処理部107に使用ブロック数削減要求を出す。
削除コマンド処理部106は、インタフェース部130から削除コマンド受信の通知を受けると、アドレス変換テーブル101Aに対して、指定された論理アドレスに対応する記録位置のデータを無効化するように、マッピングを更新する。
ブロック数削減処理部107は、有効データを格納する使用ブロックのうち、1つ以上の使用ブロック(以下、これを転記元ブロックという)を選択し(選択部)、選択した転記元ブロック中の有効データをフリーブロックに転記する(第2書込部)。いずれのブロック群のブロック数を削減するかは、転記元ブロック群選択部108によって選択される。また、転記元ブロックは、転記元ブロック選択部109によって選択される。
ブロック数削減処理部107は、有効データの転記の結果、フリーブロックとなった転記元ブロック、すなわち有効データ量が‘0’となった転記元ブロックを新たなフリーブロックとして回収する。転記したデータについては、転記先の論理アドレスに対応する記録位置をアドレス変換テーブル101Aに登録することでマッピングを更新する。ここで、新たにフリーブロックとして回収された転記元ブロックの数と転記先のブロック(以下、転記先ブロックという)として割り当てられたフリーブロックの数との差が、使用ブロックの削減数となる。なお、転記元ブロックには、同じ動作モードの使用ブロック同士を選択するとよい。また、転記先ブロックとして割り当てられたフリーブロックは、MLCモードで使用されるとよい。
転記元ブロック群選択部108は、SLCブロック群またはMLCブロック群のどちらのブロック数を削減するかを選択する。転記元ブロック群選択部108は、たとえば各ブロック群内またはいずれかのブロック群内の有効データ率に基づいて、削減対象のブロック群を選択する。転記元ブロック群選択部108は、ブロック群内の有効データ率を、ブロック管理部102から参照した各ブロック群のブロック数と、有効データ量管理部103から参照した各ブロックまたは各ブロック群の有効データ量と、から算出することができる。すなわち、転記元ブロック群選択部108は、ブロック群内の有効データ率を、各ブロック群の動作モードとブロック数とから各ブロック群の総容量を算出し、これで各ブロック群の有効データ量を除算することで求めることができる。
転記元ブロック選択部109は、転記元ブロック群選択部108によって選択された転記元ブロック群の中から1つ以上の使用ブロックを転記元ブロックとして選択する。転記元ブロック選択部109は、たとえば転記元ブロック群に属する使用ブロックのうち、有効データ率が低いブロックを優先的に選択する。もしくは、転記元ブロック選択部109は、転記元ブロック群選択部108が転記元ブロック群の選択に用いたMLCブロック群の有効データ率の閾値を基準とし、この閾値よりも有効データ率がより低い使用ブロックを優先的に選択するように構成されてもよい。さらには、転記元ブロック群がSLCブロック群の場合には、単純にFIFO順にブロックを選択する、すなわち書込みの古い順にSLCブロックを選択してもよい。
つぎに、データ管理単位およびアドレス変換テーブルについて、図面を参照して詳細に説明する。一般に、ホスト機器150から記憶装置にアクセスする際のデータ管理単位はセクタと呼ばれ、そのサイズは512バイトである。HDDやSSD等の記憶装置からホスト機器150に提供される記憶領域には、セクタ単位で先頭から順に連続した論理アドレスが付けられている。この論理アドレスは、一般にはLBA(Logical Block Address)と呼ばれる。
それに対し、本実施の形態1にかかるメモリシステム1内部でのデータ管理単位は、クラスタと呼ばれる。クラスタのサイズは、セクタよりも大きなサイズとすることが可能である。クラスタのサイズをセクタのサイズよりも大きくした場合、アドレス変換テーブル101A上のエントリ数や処理量を削減することが可能となる。例えば、1クラスタを8セクタで構成した場合、各クラスタには論理アドレスが8の倍数から始まる連続した8つのセクタが含まれる。この結果、クラスタのサイズは、4kB(キロバイト)となる。以下の説明では、メモリシステム1内部でのデータ管理単位をクラスタとし、論理アドレスを各クラスタの先頭セクタのLBAとし、クラスタサイズを4kBとした場合を例に挙げる。ただし、クラスタサイズは、目的等に応じて種々変形することが可能である。もちろん、データの管理情報を格納する領域が十分に確保できるのであれば、クラスタサイズとセクタサイズを等しくしてもよい。この場合、セクタ単位でデータを管理することが可能になる。
ブロック内の各ページには、複数のデータがクラスタ単位で記録される。クラスタ内のデータは、前述した通り、連続した論理アドレスのセクタデータである。ただし、ブロック内の複数のクラスタデータが連続した論理アドレスのクラスタデータであるとは限らない。論理アドレスとメモリシステム1内部での記録位置とのマッピングは、後述するように、ホスト機器150からの書込み順序やメモリシステム1内部での転記順序に依存して動的に定まる。
そこで、論理アドレスと記録位置とのマッピングを管理するアドレス変換テーブル101Aが設けられる。アドレス変換テーブル101Aが備える機能には、論理アドレスに対する記録位置の登録機能、無効化機能、および、マッピングの検索機能が挙げられる。また、アドレス変換テーブル101Aは、マッピングが更新された際に、その記録位置に対応するブロックのブロック番号と、ブロック内の有効データ量の差分とを、有効データ量管理部103に通知する機能を備える。
マッピング情報を保持するアドレス変換テーブル101Aのデータ構造としては、様々なものが適用可能である。図6は、アドレス変換テーブルの単純なデータ構造の一例である。図6に示すデータ構造は、表記容量分の全クラスタの記録位置を格納可能なアドレス変換テーブル101Aが、論理アドレス順に各クラスタの記録位置を保持する構造である。このテーブル構造は、たとえばメモリ上に予め用意されている。図6に示す例では、クラスタサイズが4KB、各クラスタデータの先頭論理アドレスが8の倍数であり、記録位置としてブロック番号、ページ番号、および、ページ内オフセット位置を保持している。
なお、図6に示すデータ構造の例では、記録位置から論理アドレスを検索する際に、アドレス変換テーブル101A内の全エントリから記録位置が一致するエントリを検索する必要がある。このため、コストが非常に大きい。そこでアドレス変換テーブル101Aは、記録位置から論理アドレスを高速に検索することが可能な逆引きテーブルを別途保持してもよい。図7に逆引きテーブルの例を示す。図7に示す例では、逆引きテーブルは、各ブロック内の全記録位置に対応する論理アドレスを記録したサブテーブル101b−1,101b−2,…と、各ブロックに対応するサブテーブル101b−1,101b−2,…へのポインタをもつメインテーブル101aと、から構成される。
つづいて、ホスト機器150からの要求に応じたデータ書込みおよび削除、ならびに、メモリシステム1内でのデータの転記の際に、それぞれアドレス変換テーブル101A上のマッピングがどのように更新されるかを、図面を用いて詳細に説明する。なお、この説明において、ホスト機器150から指定された書込みデータの論理アドレスを16とする。
図8および図9は、データ書込み時のマッピングの更新を説明するための図である。図8に示す例では、データ書込み前の状態のアドレス変換テーブル101Aに、論理アドレス“16”に対する記録位置として、ブロック“C”、ページ番号“2”、および、ページ内オフセット位置“1”が登録されている。そこで、他の論理アドレスへの書込みデータも含めてページサイズ分のデータがホスト機器150からバッファメモリ部120に蓄えられると、書込コマンド処理部105は、バッファメモリ部120に蓄積された1ページ分のデータを新規データ書込み用のブロックとして選択されたブロック“A”の未書込みページ“1”にページ単位で書き込む。
このようなデータ書込み後、図9に示すように、アドレス変換テーブル101Aには、論理アドレス“16”に対する記録位置として、新しいデータが記録されたブロック“A”、ページ“1”、および、ページ内オフセット位置“0”が、書込コマンド処理部105によって登録される。これにより、アドレス変換テーブル101Aが管理するマッピングが更新される。この結果、古い記録位置のデータが無効データとなり、新しい記録位置のデータが有効データとなる。
図10および図11は、データ削除時のマッピングの更新を説明するための図である。データ削除時のマッピングの更新では、データ書込み時のマッピングの更新と異なり、ブロックへのデータ書込みは発生せず、アドレス変換テーブル101Aに対して論理アドレスに対応する記録位置の無効化のみが行われる。図10および図11に示す例では削除コマンド処理部106が、データ削除前の状態のアドレス変換テーブル101A(図10参照)に対し、論理アドレス“16”に対応するエントリの記録位置に無効値(例えばどのブロックも意味しないブロック番号)を登録することで、マッピングを無効にしている(図11参照)。これにより、ブロック“C”上の古い記録位置のデータが無効データとなる。
図12および図13は、SSD内でのデータ転記時のマッピングの更新を説明するための図である。データ書込み時のマッピング更新とデータ転記時のマッピング更新とで異なる点は、対象のデータがメモリシステム1内部に記録されているか否かの点にある。
図12に示す例では、データ転記前に、論理アドレス“0”、“8”および“16”に対する有効データが、転記元ブロック“E”および“F”に記録されている。ブロック数削減処理部107は、転記元ブロックとして選択された使用ブロックを先頭ページから順に、アドレス変換テーブル101Aを用いて各記録位置のデータが有効データであるか否かをチェックする。また、ブロック数削減処理部107は、転記元ブロック“E”および“F”内のチェックされた有効データをバッファメモリ部120に順次読み出し、その後、ページサイズ分のデータがバッファメモリ部120に溜まると、このデータを転記先ブロック“D”にページ単位で記録することで、対象の有効データを転記する。
このようなデータ転記後、図13に示すように、アドレス変換テーブル101Aには、転記したデータの論理アドレスに対応する記録位置が、ブロック数削減処理部107によって登録される。図12および図13に示す例では、論理アドレス“0”、“8”および“16”に対する有効データが転記先ブロック“D”に転記されたため、それらの論理アドレスの記録位置としてブロック“D”上の位置がアドレス変換テーブル101Aに登録される。この結果、転記元ブロック“E”および“F”上の古い記録位置のデータは、無効データとなる。
なお、図7に示したように、アドレス変換テーブル101A内に逆引きテーブルを保持する場合、上記のマッピング更新時に、この逆引きテーブルも同様に更新される。
つぎに、本実施の形態1によるブロック管理について、図5を参照して詳細に説明する。上述したように、ブロックは、フリーブロックと使用ブロックとに分類できる。フリーブロックには有効データが全く記録されていないため、以降のデータ書込みにおける書込み対象のブロックに割り当てることが可能である。一方、使用ブロックには有効なデータが存在する。この使用ブロックは、その動作モードに応じてSLCブロックとMLCブロックとに分類できる。
ブロック管理部102は、各ブロックを管理するブロック管理情報102dの他、いずれのブロックがフリーブロックであるかの情報であるフリーブロック群管理情報102a(第1管理情報)、いずれのブロックがSLCブロックであるかの情報であるSLCブロック群管理情報102b(第2管理情報)、およびいずれのブロックがMLCブロックであるかの情報であるMLCブロック群管理情報102c(第3管理情報)を保持する。各ブロック群の管理情報(102a〜102c)は、各ブロック群に含まれるブロックの情報と、そのブロック数と、を含む。
ブロック管理部102は、フリーブロック群管理情報を記憶する記憶装置(第1記憶部)、SLCブロック群管理情報102bを記憶する記憶装置(第2記憶部)、MLCブロック群管理情報102cを記憶する記憶装置(第3記憶部)を有しても良く、各管理情報は、ブロック管理部102が有する1つの記憶装置に記憶されていても良く、また、ブロック管理部102が複数の記憶装置を有し、各管理情報をいずれかの記憶装置(記憶部)を設けて記憶されていても良い。
ブロック管理部102は、フリーブロックの割当、フリーブロックの登録、使用ブロックの登録、ブロック群内のブロック数の参照、およびブロック情報の参照をそれぞれ実行するための機能を持つ。
使用ブロックの登録機能は、登録を指定されたブロックの動作モードに応じ、SLCブロック群管理情報102bまたはMLCブロック群管理情報102cにそのブロックの情報を追加し、そのブロック群のブロック数を1つ増加する。
フリーブロックの割当機能は、フリーブロック群管理情報102aを参照し、フリーブロック群に含まれるブロックを1つ選択して、この選択したフリーブロックの情報を書込コマンド処理部105またはブロック数削減処理部107に返す。また、フリーブロックの割当機能は、この選択したブロックの情報をフリーブロック群管理情報102aから削除するとともに、フリーブロック群のブロック数を1つ削減する。
フリーブロックの登録機能は、登録を指定されたブロックの動作モードに応じ、SLCブロック群管理情報102bまたはMLCブロック群管理情報102cからそのブロックの情報を削除し、そのブロック群のブロック数を1つ削減する。その後、フリーブロックの登録機能は、フリーブロック群管理情報102aにそのブロックの情報を追加し、そのブロック群のブロック数を1増加する。この機能は、データの転記により有効データが‘0’になった使用ブロックをフリーブロックとして回収する際に、ブロック数削減処理部107によって使用される。
ここで、各ブロック群の管理情報のデータ構造としては、様々な形態が考えられる。ただし、本実施の形態1では、上述したように、メモリシステム1に搭載されている全ブロックが1つのブロック群に集中しても管理が可能なデータ構造である必要がある。これは、同時に全てのブロックをSLCブロックとして使用することを可能にするためである。そこで、たとえば最も単純なデータ構造の1つとしては、ブロック番号を格納したノードを連結するリスト構造が挙げられる。
なお、本実施の形態1では、NANDフラッシュメモリが提供する物理的な1つのブロックをそのまま1つのブロックとして使用してもよいし、複数の物理ブロックを組にして1つの論理的なブロックを構成してもよい。例えば、1つの物理ブロック(MLCモード)のブロック容量が1MB、ページサイズが8KB、ページ数が128ページであるとした場合、その物理ブロックを32つ集めて論理ブロックを構成すると、その論理ブロックは、ブロック容量が32MB、ページサイズが256KB、ページ数が128ページのブロックとして扱うことができる。この場合、各機能ブロックで使用されるブロック番号は、論理ブロックの番号となる。
複数の物理ブロックを組にして論理的な1つのブロックとして扱うことのメリットの1つとしては、全ブロック数が少なくなることにより管理すべきブロックの情報が少なくなることである。例えば総記憶容量が128GBのSSDでは、物理ブロックの数が131072(=128×1024)つである。これに対し、32つの物理ブロックを組にした論理ブロックの数は4096つとなる。また、全て並列アクセス可能な物理ブロックを組にして論理ブロックを構成した場合、1つの論理ブロックのアクセス速度を向上させることが可能である。
つぎに、本実施の形態1による有効データ量管理部103について、図面を参照して詳細に説明する。有効データ量管理部103は、SLCブロック群およびMLCブロック群に含まれるブロックの総有効データ量を算出する。また、有効データ量管理部103は、アドレス変換テーブル101Aからの更新通知をトリガとして、マッピングが更新されたブロックが属するブロック群をブロック管理部102から検索し、更新通知に含まれる差分情報を用いて該当ブロック群の有効データ量を加算または減算する。ここで、有効データ量管理部103は、ブロック毎の有効データ量を保持してもよい。このブロック毎の有効データ量は、ブロック群毎の有効データ量と同様に、該当ブロックの有効データの差分情報を用いて加算または減算される。
なお、有効データ量管理部103は、独立した1つの機能部で無くてもよい。たとえば、有効データ量管理部103の機能を、アドレス変換テーブル101Aに持たせることも可能である。具体的には、アドレス変換テーブル101Aが図7に示すような逆引きテーブルを備える場合、各サブテーブル101b−1,101b−2,…内に各ブロックの有効データ量が登録される構成であってもよい。または、ブロック管理部102に有効データ量管理部103の機能を持たせることも可能である。この場合、ブロック管理部102内に、各ブロックとブロック群との有効データ量に関する情報が登録される。
つづいて、本実施の形態によるメモリシステム1の動作について、図面を参照して詳細に説明する。図14は、ホスト機器150からデータの書込み要求があった際の概略動作を示すフローチャートである。なお、図14に示す動作では、初期状態として、新規データ書込みブロックが割り当て済みであるとする。
図14に示すように、書込コマンド処理部105は、まず、インタフェース部130へホスト機器150からの新規データの書込みコマンドが入力されるのを待機する(ステップS101のNO)。書込みコマンドを受けると(ステップS101のYES)、書込コマンド処理部105は、バッファメモリ部120上にデータ格納領域を確保し(ステップS102)、つづいて、ホスト機器150から送信された新規データをバッファメモリ部120に確保しておいたデータ格納領域に格納する(ステップS103)。
つぎに、書込コマンド処理部105は、バッファメモリ部120に格納された未書込みの新規データのデータ量を確認し(ステップS104)、データ量がページサイズ未満である場合(ステップS104のNO)、ステップS101へ帰還して、次の書込みコマンドを待機する。一方、データ量がページサイズ以上である場合(ステップS104のYES)、書込コマンド処理部105は、バッファメモリ部120内の未書込みデータからページサイズ分のデータを選択し、この選択されたデータを不揮発性メモリ部110内の割り当てておいた新規データ書込みブロックにSLCモードでページ書込みする(ステップS105)。
つづいて、書込コマンド処理部105は、書き込んだデータの論理アドレスと記録位置(ブロック番号、ページ番号およびページ内オフセット)とをアドレス変換テーブル101Aに登録することで(ステップS106)、マッピングを更新する。この時、有効データ量の変化がアドレス変換テーブル101Aから有効データ量管理部103に通知される。その後、書込コマンド処理部105は、バッファメモリ部120における書き込んだデータが格納されていた領域を解放する(ステップS107)。
つぎに、書込コマンド処理部105は、新規データ書込みブロックにデータが書き込まれていないページ、すなわち未書込みページが存在するか否かを判断する(ステップS108)。なお、新規書込みブロックの動作モードは、SLCモードである。未書込みページが存在する場合(ステップS108のNO)、ステップS104へ帰還して、バッファメモリ部120上の残りの未書込データ量をチェックする。一方、未書込みページが存在しない場合(ステップS108のYES)、すなわち新規データ書込みブロックの最大ページまでデータの書込みが完了していたら、書込コマンド処理部105は、ブロック管理部102のSLCブロック群管理情報102bに、この新規データ書込みブロックを登録する(ステップS109)。つづいて、書込コマンド処理部105は、ブロック管理部102のフリーブロック群管理情報102aにおいて管理されているフリーブロックを1つ取得し、このフリーブロックを次の新規データ書込みブロックに割り当てる(ステップS110)。
つぎに、書込コマンド処理部105は、ブロック管理部102のフリーブロック群管理情報102aからフリーブロック群のブロック数を参照し、フリーブロック数が所定の閾値Tbf以下であるか否かを判定する(ステップS111)。フリーブロック数が所定の閾値Tbfより大きい場合(ステップS111のNO)、書込コマンド処理部105は、ステップS104へ帰還する。一方、フリーブロック数が所定の閾値Tbf以下である場合(ステップS111のYES)、書込コマンド処理部105は、ブロック数削減処理部107に使用ブロック数削減の要求を出して、使用ブロック数削減処理を実行する(ステップS112)。その後、書込コマンド処理部105は、ステップS104へ帰還する。
ここで、所定の閾値Tbrは、ブロック数削減処理部107で転記先ブロックとして同時に確保するブロック数以上であることが必要である。転記先ブロックには、少なくとも1ブロックが必要となるので、所定の閾値Tbrは1以上であることが必要である。
なお、図14において、ステップS101〜S103の処理と、ステップS104以降の処理とは、並列に実行することが可能である。ただし、ページ書込みを行うステップS105以降の処理に比較的長い時間を要する場合、バッファメモリ部120上にデータ格納領域を確保するステップS102の際にまだ十分なサイズの領域が解放されていない場合がある。そこで、ステップS101〜S103の処理とステップS104以降の処理とを並列に行う場合では、バッファメモリ部120上に十分なサイズの領域が解放されるのを待つステップを設けるとよい。
また、ステップS104以降の処理においても、新規データ書込み処理を行うステップS104〜S110までの処理と、使用ブロック数削減処理を行うステップS111〜S112は、並列に実行することが可能である。ただし、不揮発性メモリ部へのデータアクセスが並列に実行できないページ読出しやページ書込みが存在する場合には、それらの処理を適宜逐次的に実行する必要がある。
ここで、図14のステップS112に示す使用ブロック数削減処理について説明する。使用ブロック数削減処理では、いくつかの使用ブロックに散在する有効データをまとめて他のブロックに転記することで、使用ブロック数を削減してフリーブロック数を増やす。たとえば、転記元ブロックをM個とし、このM個の転記元ブロック内に格納されている有効データ量がN個の転記先ブロックに格納可能な場合、(M−N)個の使用ブロック数を削減することができる。この際、本実施の形態1では、転記元ブロックに、同一の動作モード(SLCモードまたはMLCモード)の使用ブロックを選択する。また、転記先ブロックには、MLCモードでデータを転記する。
以下では、2通りの使用ブロック数削減処理を例に挙げる。図15は、転記元ブロックと転記先ブロックとを複数ブロックまとめて設定する場合の例である。図16Aは、転記元ブロックと転記先ブロックとを1つずつ設定する場合の例である。図16Bは、図16Aの変形例である。
図15に示すように、ブロック数削減処理部107は、書込コマンド処理部105から使用ブロック数削減の要求を受けると、まず、ブロック管理部102において管理されているSLCブロック群とMLCブロック群とのうち転記元とする、すなわち削減対象とするブロック群を選択する転記元ブロック群選択処理を転記元ブロック群選択部108に実行させる(ステップS121)。つづいて、ブロック数削減処理部107は、転記元ブロック選択部109に、選択ブロック群のうち転記元とするM(≧1)個の使用ブロックを転記元ブロックとして選択する処理を実行させる(ステップS122)。ここで、たとえば転記元ブロック群にMLCブロック群が選択され、このMLCブロック群の総有効データ率がVであるとすると、M×V個の転記先ブロックに有効データを納めることが可能なM個の転記元ブロックを選択することが可能である。この場合、M≧1/(1−V)となる整数Mを選択することで、M−1以下の整数N個のMLCブロックに有効データが転記される。
つづいて、ブロック数削減処理部107は、選択されたM個の転記元ブロックの有効データをMLCブロックに格納する場合に必要となるブロック数Nを求め、求めたN個のフリーブロックをブロック管理部102のフリーブロック群管理情報102aにおいて管理されているフリーブロック群から取得して、これを転記先ブロックに割り当てる(ステップS123)。ブロック数Nは、たとえば、選択されたM個の転記元ブロックそれぞれの有効データ量を有効データ量管理部103から取得し、この有効データ量を合算して全ての転記元ブロックの総有効データ量Dを算出し、得られた有効データ量DをMLCブロックのブロック容量Smで除算し、この値の小数点以下を切り上げることで求めることができる。
つぎに、ブロック数削減処理部107は、バッファメモリ部120上に少なくとも1ページ分のデータ格納領域を確保し、つづいて、選択されたM個の転記元ブロックに格納されている1ページ分の有効データをバッファメモリ部120に確保されたデータ格納領域に読み出す(ステップS124)。つづいて、ブロック数削減処理部107は、バッファメモリ部120上に読み出した有効データを転記先ブロックとして選択されているフリーブロックにMLCモードでページ書込みする(ステップS125)。
つぎに、ブロック数削減処理部107は、M個全ての転記元ブロックの有効データを転記し終えたか否かを判定し(ステップS126)、転記し終えていない場合(ステップS126のNO)、ステップS124へ帰還して、残りの有効データをページ単位で転記する。一方、転記し終えている場合(ステップS126のYES)、ブロック数削減処理部107は、転記した有効データについて、論理アドレスに対応する転記先の記録位置をアドレス変換テーブル101Aに登録することで、マッピングを更新する(ステップS127)。これにより、選択されたM個の転記元ブロック内の有効データが全て無効データとなる。つづいて、ブロック数削減処理部107は、データ転記済みの転記元ブロックをブロック管理部102のフリーブロック群管理情報102aに登録するとともに(ステップS128)、新たに有効データが格納された転記先ブロックをブロック管理部102のMLCブロック群管理情報102cに登録し(ステップS129)、図14に示す動作へリターンする。これにより、データ転記済みの転記元ブロックがフリーブロックとして回収される。この結果、(M−N)個の使用ブロック数が削減される。
一方、転記元ブロックと転記先ブロックとを1つずつ設定する場合、図16Aに示すような処理の流れとなる。ブロック数削減処理部107は、書込コマンド処理部105から使用ブロック数削減の要求を受けると、まず、図15のステップS121と同様の転記元ブロック群選択処理を転記元ブロック群選択部108に実行させ(ステップS141)、つづいて、ブロック容量分のデータの転記が完了した転記先ブロックの総数Bdstに‘0’を設定する(ステップS142)。つぎに、ブロック数削減処理部107は、転記元ブロック選択部109に、転記元に選択されたブロック群から1つの使用ブロックを転記元ブロックとして選択させるとともに(ステップS143)、ブロック内の有効データの転記が完了した転記元ブロックの総数Bsrcに‘0’を設定する(ステップS144)。
つぎに、ブロック数削減処理部107は、ブロック管理部102のフリーブロック群管理情報102aにおいて管理されているフリーブロック群から1つのフリーブロックを取得し、これを転記先ブロックに割り当てるとともに(ステップS145)、転記完了した転記先ブロックの総数Bdstを1つインクリメントする(ステップS146)。なお、バッファメモリ部120上には、ブロック数削減処理部107が使用するデータ格納領域が少なくとも1ページ分確保されているものとする。
つぎに、ブロック数削減処理部107は、選択中の転記元ブロックに格納されている有効データをバッファメモリ部120に確保されたデータ格納領域に読み出す(ステップS147)。つぎに、選択中の転記元ブロックの全ての有効データをバッファメモリ部120上に読み出したか否かを判定し(ステップS148)、読み出し済みでない場合(ステップ148のNO)、ステップ150へ移行する。
また、ステップS148の判定の結果、転記元ブロックの全ての有効データを読出し済みである場合(ステップS148のYES)、ステップS143と同様に、転記元ブロック選択部109に、転記元に選択されたブロック群から1つの使用ブロックを転記元ブロックとして選択させ(ステップS149)、ステップS150へ移行する。なお、ステップS149での新しい転記元ブロックの選択時には、その直前に選択されていた転記元ブロックが再び選択されないようにすることが好ましい。
つぎに、ブロック数削減処理部107は、バッファメモリ部120上に読み出されたデータがページサイズ以上となったか否かを判定し(ステップS150)、ページサイズ以上でない場合(ステップS150のNO)、ステップS147へ帰還する。一方、ページサイズ以上である場合(ステップS150のYES)、ブロック数削減処理部107は、バッファメモリ部120上に読み出した有効データを転記先ブロックとして選択されているフリーブロックにMLCモードでページ書込みする(ステップS151)。
つぎに、転記した有効データについて、論理アドレスに対応する転記先の記録位置をアドレス変換テーブル101Aに登録することで、マッピングを更新する(ステップS152)。
つぎに、ステップS151で書き込んだ有効データの元になっている転記元ブロックのうち、有効データ量が0になった転記元ブロックを全てフリーブロック群に登録する(ステップS153)。つづいて、転記が完了した転記元ブロックの総数Bsrcに、ステップS153でフリーブロックとなった転記元ブロック数(フリーブロック増加数)を加算する(ステップS154)。
つぎに、ブロック数削減処理部107は、転記先ブロックにMLCモードの最大ページまで書込みが完了したか否かを判定し(ステップS155)、書込みが完了していない場合(ステップS155のNO)、ステップS147へ帰還する。
また、ステップS155の判定の結果、転記先ブロックにMLCモードの最大ページまで書込みが完了している場合(ステップS155のYES)、ブロック数削減処理部107は、転記先ブロックをブロック管理部102のMLCブロック管理情報102cに登録する(ステップS156)。つづいて、ブロックの削減数が予め定めておいた削減予定数以上となったか否か、すなわち転記済みの転記元ブロックの総数Bsrcから転記済みの転記先ブロックの総数Bdstを減算した値が予め定めておいた削減予定数以上となったか否かを判定し(ステップS157)、削減予定数以上となっていない場合(ステップS157のNO)、ステップS145へ帰還する。一方、削減予定数以上となっている場合(ステップS157のYes)、ブロック数削減処理部107は、図14に示す動作へリターンする。以上のようにしても、目的の数の使用ブロックを削減することができる。
転記中に何らかの不具合により転記先ブロックのデータの読出しが不可能になった場合に備えて、有効データとアドレス変換テーブルをロールバックできるように転記前の状態を残しておく構成も可能である。図16Bは、図16Aを変形した例である。図16Bでは、ブロック内の有効データのコピーが完了した転記元ブロックを即座にフリーブロックとして回収せず、転記先ブロックにブロック容量分の転記が完了するまでの間、一時的にフリー化準備ブロック群として保護する。転記先ブロックの転記が完了した時点で転記前の状態は残しておく必要がなくなるため、転記済みのデータについてアドレス変換テーブルを更新した後、転記が完了した転記元ブロックをフリー化準備ブロック群からまとめてフリーブロックとして回収する。
図16BのステップS141からS151までは、図16Aと同じである。以降ではステップ160以降について説明する。
ブロック数削減処理部107は、ステップS151で書き込んだ有効データの元になっている転記元ブロックのうち、有効データを全てコピーした転記元ブロックを全てフリー化準備ブロック群に登録する(ステップS160)。
つぎに、ブロック数削減処理部107は、転記先ブロックにMLCモードの最大ページまで書込みが完了したか否かを判定し(ステップS161)、書込みが完了していない場合(ステップS161のNO)、ステップS147へ帰還する。
また、ステップS161の判定の結果、転記先ブロックにMLCモードの最大ページまで書込みが完了している場合(ステップS161のYES)、ブロック数削減処理部107は、転記先ブロックをブロック管理部102のMLCブロック管理情報102cに登録する(ステップS162)。
つぎに、転記先ブロックに転記した有効データについて、論理アドレスに対応する転記先の記録位置をアドレス変換テーブル101Aに登録することで、マッピングを更新する(ステップS163)。つづいて、フリー化準備ブロック群に含まれるブロックをフリーブロックに登録する(ステップ164)。つづいて、転記が完了した転記元ブロックの総数Bsrcに、ステップS164でフリーブロックとなった転記元ブロック数を加算する(ステップS165)。
つぎに、ステップS166に移行し、図16AのステップS157と同じく、ブロックの削減数が所定の削減予定数以上となっていない場合(ステップS166のNO)は、ステップS145へ帰還する。一方、削減予定数以上となっている場合(ステップS166のYES)は、図14に示す動作へリターンする。
もし、図16Aのように、転記先ブロックが埋まる前に転記元ブロックをフリーブロックに登録し、フリーブロックが再利用されて消去されてしまうと、その後に転記先ブロックに不具合が生じてデータが読めない状態になった場合、データが失われてしまう。それに対して、図16Bの処理の流れによれば、転記先ブロックが埋まるまでは同一データが転記元ブロックと転記先ブロックに二重化されている。これにより、たとえ転記中に不具合が発生して転記先ブロックのデータが読めない状態になったとしても、元データが転記元ブロックに残っているため、データを失うことがない。このように、図16Bに示した処理の流れでは、耐障害性を高めることができる。
つぎに、図15ならびに図16Aおよび図16BのステップS121およびS141に示す転記元ブロック群選択処理について説明する。転記元ブロック群選択処理には、いくつかの方法が考えられる。以下では、そのうちの3つを例に挙げて説明する。
図17は、MLCブロック群の有効データ率が所定の閾値より低い場合にはMLCブロック群を優先的に転記元のブロック群として選択する場合の例である。図18は、SLCブロック群とMLCブロック群とのうち有効データ率の低いブロック群を転記元のブロック群として選択する場合の例である。図19は、図18に示す例に図17に示すMLCブロック群のブロック数Bmと有効データ率Vmとの制約を設けた場合の例である。
図17に示すように、転記元ブロック群選択部108は、ブロック管理部102のMLCブロック管理情報102cを参照してMLCブロック群の総ブロック数Bmを取得し(ステップS201)、MLCブロック群に属するMLCブロックそれぞれの有効データ量を有効データ量管理部103から取得し、この有効データ量を合算して全てのMLCブロックの総有効データ量Dmを算出し(ステップS202)、つづいて、以下の式1に示すように、ステップS202で取得した総有効データ量DmをステップS201で取得した総ブロック数Bmに1つのMLCブロックの容量Smを乗算した値で除算することで、MLCブロック群の総有効データ率Vmを算出する(ステップS203)。
Vm=Dm/(Bm*Sm) ・・・(式1)
つぎに、転記元ブロック群選択部108は、MLCブロック群の総ブロック数Bmが予め定めておいた閾値Tbm以下であるか否かを判定し(ステップS204)、閾値Tbmより大きい場合(ステップS204のNO)、つづいて、MLCブロック群の総有効データ率Vmが予め定めておいた閾値Tvmより大きいか否かを判定する(ステップS205)。
総ブロック数Bmが閾値Tbm以下である場合(ステップS204のYES)、または、総有効データ率Vmが閾値Tvmより大きい場合(ステップS205のYES)、転記元ブロック群選択部108は、SLCブロック群を転記元のブロック群として選択する(ステップS206)。一方、総ブロック数Bmが閾値Tbmより大きく、且つ、総有効データ率Vmが閾値Tvm以下である場合(ステップS204のNO、および、ステップS205のNO)、転記元ブロック群選択部108は、MLCブロック群を転記元のブロック群として選択する(ステップS207)。以上のようにして、転記元のブロック群を選択すると、転記元ブロック群選択部108は、図15、図16Aまたは図16Bに示す動作へリターンし、処理をブロック数削減処理部107へ返す。
例えば閾値Tvmの値としては、全てのブロックがMLCブロックであった場合より転記の効率が悪くならない値とすることが望ましい。転記の効率が最悪となるのは、ホストに提供する表記容量分の有効データが全て記録されており、かつ有効データが全ブロックに平均的に分散して格納されている場合である。この時、総記憶容量をSall、表記容量をSmaxとすると、各ブロックの有効データ率V=Smax/Sallとなっている。ここで転記を行うと、M=1/(1−V)個の転記元ブロックをN=M−1個の転記先ブロックに転記することで、使用ブロックを1個削減可能である。したがって閾値Tvm=Vとすれば、MLCブロック群の総有効データ率Vmが閾値Tvm以下である場合、少なくともM個の転記元ブロックを転記すれば使用ブロックを1個削減可能であり、上記の最悪ケースよりも転記の効率が悪くなることはない。
このように、図17で示した転記元ブロック群選択部108によれば、転記の効率が閾値Tvmで定まる値より悪くならない範囲でMLCブロック群のブロック数を減らすことができ、その分をSLCブロックに割り当てることができる。
また、SLCブロック群とMLCブロック群とのうち有効データ率の低いブロック群を転記元のブロック群として選択する場合、図18に示すように、転記元ブロック群選択部108は、図17のステップS201〜S203と同様にして、総有効データ率Vmを算出する。
また、転記元ブロック群選択部108は、ブロック管理部102のSLCブロック管理情報102bを参照してSLCブロック群の総ブロック数Bsを取得し(ステップS221)、SLCブロック群に属するMLCブロックそれぞれの有効データ量を有効データ量管理部103から取得し、この有効データ量を合算して全てのSLCブロックの総有効データ量Dsを算出し(ステップS222)、つづいて、以下の式2に示すように、ステップS222で取得した総有効データ量DsをステップS221で取得した総ブロック数Bsに1つのSLCブロックの容量Ssを乗算した値で除算することで、SLCブロック群の総有効データ率Vsを算出する(ステップS223)。ここで、SLCモードを2値、MLCモードを4値とした場合、SLCブロックの容量Ssは、MLCブロックの容量Smの1/2である。
Vs=Ds/(Bs*Ss) ・・・(式2)
つぎに、転記元ブロック群選択部108は、ステップS203で算出したMLCブロック群の総有効データ率Vmと、ステップS223で算出したSLCブロック群の総有効データ率Vsとを比較し(ステップS224)、SLCブロック群の総有効データ率VsがMLCブロック群の総有効データ率Vm以下である場合(ステップS224のYES)、SLCブロック群を転記元のブロック群として選択する(ステップS206)。一方、総有効データ率Vsが総有効データ率Vmより大きい場合(ステップS224のNO)、転記元ブロック群選択部108は、MLCブロック群を転記元のブロック群として選択する(ステップS207)。以上のようにして、転記元のブロック群を選択すると、転記元ブロック群選択部108は、図15、図16Aまたは図16Bに示す動作へリターンし、処理をブロック数削減処理部107へ返す。
このように、図18で示した転記元ブロック群選択部108の処理の流れによれば、SLCブロック群とMLCブロック群とのうち有効データ率の低いブロック群を転記元のブロック群として選択するので、図17で示した処理の流れに比べて、総有効データ率の計算量は増加するが、転記の効率を良くすることが可能である。
また、単純にSLCブロックとMLCブロックの容量を同じとして両ブロック群の総有効データ率を算出した場合、元々有効データが半分しか格納されないSLCブロック群が選択されやすい。それに対し、SLCブロックの容量SsをMLCブロックの容量Smの1/2としてSLCブロック群の総有効データ率を算出することにより、SLCブロック群が選択されやすい傾向を防ぐことができる。
さらに、図18に示す例に図17に示すMLCブロック群のブロック数Bmと有効データ率Vmとの制約を設けた場合、図19に示すように、転記元ブロック群選択部108は、図17に示すステップS201〜S203と同様にしてMLCブロック群の総有効データ率Vmを算出すると、つづいて、図17に示すステップS204およびS205と同様にして、MLCブロック群の総ブロック数Bmが予め定めておいた閾値Tbm以下であるか否かを判定し(ステップS204)、閾値Tbmより大きい場合(ステップS204のNO)、つづいて、MLCブロック群の総有効データ率Vmが予め定めておいた閾値Tvmより大きいか否かを判定する(ステップS205)。
総ブロック数Bmが閾値Tbm以下である場合(ステップS204のYES)、または、総有効データ率Vmが閾値Tvmより大きい場合(ステップS205のYES)、転記元ブロック群選択部108は、SLCブロック群を転記元のブロック群として選択する(ステップS206)。一方、総ブロック数Bmが閾値Tbmより大きく、且つ、総有効データ率Vmが閾値Tvm以下である場合(ステップS204のNO、および、ステップS205のNO)、転記元ブロック群選択部108は、図18に示すステップS221〜S223と同様にしてSLCブロック群の総有効データ率Vsを算出し、つづいて、ステップS203で算出したMLCブロック群の総有効データ率Vmと、ステップS223で算出したSLCブロック群の総有効データ率Vsとを比較し(ステップS224)、SLCブロック群の総有効データ率VsがMLCブロック群の総有効データ率Vm以下である場合(ステップS224のYES)、SLCブロック群を転記元のブロック群として選択する(ステップS206)。一方、総有効データ率Vsが総有効データ率Vmより大きい場合(ステップS224のNO)、転記元ブロック群選択部108は、MLCブロック群を転記元のブロック群として選択する(ステップS207)。以上のようにして、転記元のブロック群を選択すると、転記元ブロック群選択部108は、図15、図16Aまたは図16Bに示す動作へリターンし、処理をブロック数削減処理部107へ返す。
図18に示す転記元ブロック群選択処理では、例えばMLCブロック群の総ブロック数Bmが1であり且つ総有効データ量Dmが1クラスタである場合、MLCブロック群の総有効データ率Vmが非常に低くなるため、MLCブロック群が転記元に選択される場合がある。このようなケースでは、MLCブロック群を転記元として選択しても使用ブロック数を削減することはできない。また、総有効データ率VsおよびVmのいずれもが略100%となる状況も起こり得る。極端な例を挙げると、たとえばブロック数BsおよびBmがそれぞれ100個であって、総有効データ率Vsが100%で且つ総有効データ率Vmが99%である場合がある。このような場合でも、図18に示す転記元ブロック群選択処理では、MLCブロック群が転記元として選択されてしまう。この結果、1ブロックを削減するために、100個のMLCブロックを転記元として選択し、99個のフリーブロックを転記先として選択する必要がある。そこで図19のように、MLCブロック群のブロック数Bmと有効データ率Vmとに制約を設けることで、Vs>Vmであっても、SLCブロック群が転記元として選択されるようにする。
図20に、ランダムライトのシミュレーション結果を示す。図20のX軸は、アクセス範囲の広さ、すなわち局所性(Locality)を示し、その範囲は、0〜表記容量である。また、Y軸は、4kBのデータに関するランダムライト性能を示し、その単位は、IOPSである。また、図20において、実線L1は、メモリシステム1のランダムライト性能を示す曲線であり、破線L2は、全ブロックをMLCモードで使用する従来のメモリシステムのランダムライト性能を示す曲線である。図20を参照すると明らかなように、メモリシステム1は、特に局所性の高い範囲において、従来のメモリシステムよりも優れたランダムライト性能が得られた。
このように本実施の形態1によれば、局所性の強いアクセスパターンでは更新頻度の低いデータはMLCブロック、更新頻度の高いデータはSLCブロックに分離し、長期的な転記の効率を向上させることが可能である。また、総有効データ量が少ない場合には、SLCブロックの無駄な転記を減らし、アクセスの速いSLCブロックのキャッシュとしての効果を大きくすることが可能である。また、フリーブロックの動作モードを状況に応じて動的に選択可能な構成とすることで、SLCフラッシュメモリとMLCフラッシュメモリとのそれぞれのメリットを状況に応じて得ることが可能となる。
つぎに、実施の形態2にかかるメモリシステム2について、図面を参照して詳細に説明する。本実施の形態2では、フリーブロック数が所定の閾値Tbf以下となったこと(図14のステップS111のYES)の他に、一定時間、ホスト機器150からリード、ライト、フラッシュ、データ削除等のコマンドを受信しなかったこと、および、ホスト機器150からデータの転記が要求されたことを、図14のステップS112に示す使用ブロック数削減処理を実行するトリガに用いる。
図21と図5とを比較すると明らかなように、本実施の形態2によるメモリシステム2は、図5に示すメモリシステム1と同様の構成に加え、タイマ201が設けられている。タイマ201は、たとえばアップカウンタで構成され、カウント値が所定の値以上になると、ブロック数削減処理部107に使用ブロック数削減要求を出す。ブロック数削減処理部107は、この要求に応じて、図15、図16Aまたは図16Bに示す使用ブロック数削減処理を実行する。
図22は、タイマのカウント値に基づいて使用ブロック数削減処理を実行する際の概略動作を示すフローチャートである。図22に示すように、ブロック数削減処理部107は、タイマ201を起動後(ステップS301)、ホスト機器150からコマンドを受信したか否かをたとえば定期的に判定し(ステップS302)、コマンドを受信していない場合(ステップS302のNO)、タイマ201のカウント値Hが予め定めておいた閾値Tt以上であるか否かを判定する(ステップS303)。カウント値Hが閾値Tt未満である場合(ステップS303のNO)、ブロック数削減処理部107は、そのままステップS302へ帰還する。一方、カウント値Hが閾値Tt以上である場合(ステップS303のYES)、ブロック数削減処理部107は、タイマ201をリセットし(ステップS304)、その後、図14のステップS112と同様に、使用ブロック数削減処理を実行した後(ステップS307)、ステップS302へ帰還する。
また、ホスト機器150からコマンドを受信した場合(ステップS302のYES)、ブロック数削減処理部107は、タイマ201をリセットし(ステップS305)、つづいて、受信したコマンドが使用ブロック数削減要求であるか否かを判定する(ステップS306)。使用ブロック数削減要求でない場合(ステップS306のNO)、ブロック数削減処理部107は、そのままステップS302へ帰還する。一方、使用ブロック数削減要求である場合(ステップS306のYES)、ブロック数削減処理部107は、図14のステップS112と同様に、使用ブロック数削減処理を実行し(ステップS307)、ステップS302へ帰還する。
このように本実施の形態2によれば、ホストからのコマンドが一定時間来ない場合には今後もコマンドが来ない期間が続くと予想し、その間に使用ブロック数の削減処理を進めておくことが可能となる。また、使用ブロック数削減を指示するコマンドについても、ホスト自身がその後しばらくデータにアクセスしない期間であることを認識した上で前期コマンドを出していることを期待できる。したがって、トータルとしての使用ブロック数削減処理を減らすことはできないが、ホストがデータにアクセスしない期間にあらかじめ使用ブロック数削減処理を進めておくことにより、ホストからの書込みと並行して進めるべき使用ブロック数削減処理を減らし、ホストからの書込み時の転送性能の劣化を抑えることができる。その他の構成、動作および効果は、実施の形態1と同様であるため、ここでは詳細な説明を省略する。
なお、本発明は、上記実施の形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化することができる。また、上記実施の形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成することができる。例えば、実施の形態に示される全構成要素からいくつかの構成要素を削除してもよい。さらに、異なる実施の形態にわたる構成要素を適宜組み合わせても良い。
1 メモリシステム、10 パーソナルコンピュータ、100 コントローラ部、101 アドレス変換テーブル記憶部、101A アドレス変換テーブル、101a メインテーブル、101b−1,101b−2,… サブテーブル、102 ブロック管理部、102a フリーブロック群管理情報、 102b SLCブロック群管理情報、 102c MLCブロック群管理情報、 102d ブロック管理情報、 103 有効データ量管理部、 104 読出コマンド処理部、 105 書込コマンド処理部、 106 削除コマンド処理部、 107 ブロック数削減処理部、 108 転記元ブロック群選択部、 109 転記元ブロック選択部、 110 不揮発性メモリ部、 111 NANDコントローラ、 112 MLCフラッシュメモリ、 120 バッファメモリ部、 130 インタフェース部、 140 信号線、 150 ホスト機器、 201 タイマ、 B_slc SLCブロック、 B_mlc MLCブロック、 B_free フリーブロック、 D1 データ、 G_slc SLCブロック群、 G_mlc MLCブロック群、 G_free フリーブロック群、 Dts、Dtm データ

Claims (6)

  1. 複数の第1記憶領域を有し、前記複数の第1記憶領域のうち有効データが記憶されていない領域である第2記憶領域と、前記複数の第1記憶領域のうちホストから書き込み要求を受けたデータが書き込まれた領域である第3記憶領域と、前記複数の第1記憶領域のうち前記第3記憶領域に記憶されたデータが書込まれた領域である第4記憶領域とを持つことが可能な不揮発性の半導体メモリと、
    前記複数の第1記憶領域のうちいずれが前記第2記憶領域であるかを示す情報である第1管理情報を記憶する第1記憶部と、
    前記複数の第1記憶領域のうちいずれが前記第3記憶領域であるかを示す情報である第2管理情報を記憶する第2記憶部と、
    前記複数の第1記憶領域のうちいずれが前記第4記憶領域であるかを示す情報である第3管理情報を記憶する第3記憶部と、
    ホストから書き込み要求を受けたデータである書込要求データを受け付ける第1受付部と、
    前記第1管理情報に基づいて、1以上の第2記憶領域からいずれか1つを取得する取得部と、
    前記書込要求データを前記取得部で取得された前記第2記憶領域に第1モードで書込む第1書込部と、
    前記第1記憶領域の数が第1閾値以下の場合に、前記第2管理情報に基づいて、複数の前記第3記憶領域から1以上の記憶領域を選択するか、または、前記第3管理情報に基づいて、複数の前記第4記憶領域から1以上の記憶領域を選択する選択部と、
    前記選択部によって選択された前記記憶領域に記憶された有効データを、前記取得部によって取得された前記第2記憶領域に第2モードで書込む第2書込部と、
    前記第2書込部が書き込んだ場合に、前記選択された記憶領域を前記第2管理情報または前記第3管理情報から削除し、当該選択された記憶領域を前記第1管理情報に追加する管理情報更新部と、
    ホストからデータの読み出し要求を受ける第2受付部と、
    前記読み出し要求を受けたデータが前記第3記憶領域に書き込まれている場合は、前記第1モードで読み出し、前記読み出し要求を受けたデータが前記第4記憶領域に書き込まれている場合は、前記第2モードで読み出す読出部と、
    を有し、
    前記有効データとは、論理アドレスに対応付けられた物理アドレスに記憶されたデータであり、
    前記論理アドレスとは、ホストから指定されたアドレスであり、
    前記物理アドレスとは、半導体メモリの記憶領域でのデータの記憶位置を示し、
    前記第1モードは、前記第2モードよりも、書込みまたは読み出しが速く、
    前記第1モードは、前記第2モードよりも、同一記憶領域に書込みされうる情報の最大量が少ないことを特徴とするメモリシステム。
  2. 第5記憶領域は、複数の第3記憶領域を含む領域であり、
    第6記憶領域は、複数の第4記憶領域を含む領域であり、
    前記選択部は、前記複数の第3記憶領域を前記第5記憶領域から選択、または、前記複数の第4記憶領域を前記第6記憶領域から選択し、
    前記第2書込部は、選択された記憶領域に記憶された有効データを、1つの第2記憶領域に書込み、
    前記第2書込部で書き込まれる有効データは、第3記憶領域に記憶されたデータから構成されるか、または、第4記憶領域に記憶されたデータから構成されることを特徴とする請求項1に記載のメモリシステム。
  3. 前記選択部は、前記第6記憶領域の総有効データ率が所定の閾値より小さい場合、当該第6記憶領域内の第4記憶領域を選択し、
    前記第6記憶領域の総有効データ率は、当該第6記憶領域の総容量に対する当該第6記憶領域に格納された有効データの総データ量の率であることを特徴とする請求項2に記載のメモリシステム。
  4. 前記選択部は、前記第5記憶領域と前記第6記憶領域のうち、総有効データ率が小さい記憶領域である前記第5記憶領域に含まれる前記第3記憶領域、または、前記第6記憶領域に含まれる前記第4記憶領域を選択し、
    前記第5記憶領域の総有効データ率は、当該第5記憶領域の総容量に対する当該第5記憶領域に格納された有効データの総データ量の率であり、
    前記第6記憶領域の総有効データ率は、当該第6記憶領域の総容量に対する当該第6記憶領域に格納された有効データの総データ量の率であることを特徴とする請求項2に記載のメモリシステム。
  5. 各ブロックの動作モードに応じたブロック容量を元に前記第5記憶領域の前記総有効データ率または前記第6記憶領域の前記総有効データ率を算出するデータ量管理部とを有することを特徴とする請求項4に記載のメモリシステム。
  6. 前記半導体メモリは、複数の記憶セルを有するMLC(Multi−Level Cell)フラッシュメモリであり、
    前記MLCフラッシュメモリは、1セル当たり1ビットのデータを記憶し、または、1セル当たり複数ビットのデータを記憶し、
    前記第1モードは、2値モードで1セル当たり1ビットのデータを前記MLCフラッシュメモリに書込み、
    前記第2モードは、多値モードで1セル当たり複数ビットのデータを前記MLCフラッシュメモリに書き込むことを特徴とする請求項1に記載のメモリシステム。
JP2010214221A 2010-09-24 2010-09-24 メモリシステム Active JP5066241B2 (ja)

Priority Applications (14)

Application Number Priority Date Filing Date Title
JP2010214221A JP5066241B2 (ja) 2010-09-24 2010-09-24 メモリシステム
US13/038,681 US8832357B2 (en) 2010-09-24 2011-03-02 Memory system having a plurality of writing mode
TW100128064A TWI446168B (zh) 2010-09-24 2011-08-05 記憶體系統
EP11177759.5A EP2439645B1 (en) 2010-09-24 2011-08-17 Method and apparatus for storing data in a multi-level cell flash memory device
KR1020110082376A KR101329937B1 (ko) 2010-09-24 2011-08-18 메모리 시스템
CN201110256131.2A CN102419735B (zh) 2010-09-24 2011-08-31 存储器系统
US14/467,685 US10877664B2 (en) 2010-09-24 2014-08-25 Memory system having a plurality of writing modes
US15/391,184 US9910597B2 (en) 2010-09-24 2016-12-27 Memory system having a plurality of writing modes
US15/880,168 US10055132B2 (en) 2010-09-24 2018-01-25 Memory system and method of controlling memory system
US16/044,257 US10871900B2 (en) 2010-09-24 2018-07-24 Memory system and method of controlling memory system
US17/018,956 US11216185B2 (en) 2010-09-24 2020-09-11 Memory system and method of controlling memory system
US17/643,034 US11579773B2 (en) 2010-09-24 2021-12-07 Memory system and method of controlling memory system
US18/155,282 US11893238B2 (en) 2010-09-24 2023-01-17 Method of controlling nonvolatile semiconductor memory
US18/396,352 US20240126433A1 (en) 2010-09-24 2023-12-26 Method of controlling nonvolatile semiconductor memory

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010214221A JP5066241B2 (ja) 2010-09-24 2010-09-24 メモリシステム

Publications (2)

Publication Number Publication Date
JP2012068986A true JP2012068986A (ja) 2012-04-05
JP5066241B2 JP5066241B2 (ja) 2012-11-07

Family

ID=44651135

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010214221A Active JP5066241B2 (ja) 2010-09-24 2010-09-24 メモリシステム

Country Status (6)

Country Link
US (9) US8832357B2 (ja)
EP (1) EP2439645B1 (ja)
JP (1) JP5066241B2 (ja)
KR (1) KR101329937B1 (ja)
CN (1) CN102419735B (ja)
TW (1) TWI446168B (ja)

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014517425A (ja) * 2011-06-15 2014-07-17 アップル インコーポレイテッド Slc/mlc混成メモリのブロック管理構成
US8990480B2 (en) 2012-03-15 2015-03-24 Kabushiki Kaisha Toshiba Semiconductor memory device and computer program product
US8990458B2 (en) 2013-02-28 2015-03-24 Kabushiki Kaisha Toshiba Controller, semiconductor storage device and method of controlling data writing
JP2015088121A (ja) * 2013-11-01 2015-05-07 株式会社東芝 メモリシステムおよび方法
JP2016508276A (ja) * 2013-01-14 2016-03-17 ウェスタン デジタル テクノロジーズ インコーポレーテッド ソリッドステートメモリにおける動作のモードを構成するシステム及び方法
JP2016126737A (ja) * 2014-12-29 2016-07-11 株式会社東芝 キャッシュメモリ装置及びプログラム
JP2017527897A (ja) * 2014-08-15 2017-09-21 マイクロン テクノロジー, インク. メモリの異なるメモリプレーンに同時にアクセスするための装置および方法
US9798470B2 (en) 2015-01-23 2017-10-24 Toshiba Memory Corporation Memory system for storing and processing translation information
WO2018002999A1 (ja) * 2016-06-28 2018-01-04 株式会社日立製作所 記憶デバイス及びストレージ装置
WO2018051387A1 (ja) * 2016-09-13 2018-03-22 株式会社日立製作所 情報処理システムおよびデータ格納方法
US10366003B2 (en) 2011-12-28 2019-07-30 Toshiba Memory Corporation Controller, storage device, and computer program product for writing and transfer process
JP2019168822A (ja) * 2018-03-22 2019-10-03 東芝メモリ株式会社 ストレージデバイスおよびコンピュータシステム
US10838628B2 (en) 2017-11-06 2020-11-17 Hitachi, Ltd. Storage system and control method of maintaining reliability of a mounted flash storage
US11182074B2 (en) 2015-11-05 2021-11-23 Micron Technology, Inc. Apparatuses and methods for concurrently accessing multiple memory planes of a memory during a memory access operation
JP7448569B2 (ja) 2019-07-01 2024-03-12 インターナショナル・ビジネス・マシーンズ・コーポレーション データ・ストレージ・システムにおけるブロック・モード・トグリング

Families Citing this family (80)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI494948B (zh) * 2011-01-31 2015-08-01 Phison Electronics Corp 用於非揮發性記憶體的資料寫入方法、控制器與儲存裝置
JP5687639B2 (ja) 2012-02-08 2015-03-18 株式会社東芝 コントローラ、データ記憶装置及びプログラム
US9323667B2 (en) * 2012-04-12 2016-04-26 Violin Memory Inc. System and method for managing trim operations in a flash memory system using mapping tables and block status tables
JP5586718B2 (ja) * 2012-06-19 2014-09-10 株式会社東芝 制御プログラム、ホスト装置の制御方法、情報処理装置およびホスト装置
KR102147359B1 (ko) * 2012-06-29 2020-08-24 삼성전자 주식회사 비휘발성 메모리 장치의 관리 방법 및 비휘발성 메모리 장치
JP6102108B2 (ja) * 2012-07-24 2017-03-29 富士通株式会社 情報処理装置、データ提供方法、及びデータ提供プログラム
KR20140035769A (ko) * 2012-09-14 2014-03-24 삼성전자주식회사 연속 촬영 이미지 데이터를 처리할 수 있는 방법들과 장치들
US9690695B2 (en) * 2012-09-20 2017-06-27 Silicon Motion, Inc. Data storage device and flash memory control method thereof
TWI479492B (zh) * 2012-11-20 2015-04-01 Phison Electronics Corp 記憶體儲存裝置、其記憶體控制器與資料寫入方法
CN103914360B (zh) * 2013-01-05 2017-03-22 北京联想核芯科技有限公司 电子设备和数据备份恢复方法
EP2951834A4 (en) 2013-01-31 2016-08-31 Hewlett Packard Entpr Dev Lp NON-VOLATILE MULTINIVE CELL MEMORY WITH DECOUPLED BITS FOR HIGHER PERFORMANCE AND ENERGY EFFICIENCY
US9158678B2 (en) * 2013-03-13 2015-10-13 Kabushiki Kaisha Toshiba Memory address management system and method
TWI506430B (zh) * 2013-03-20 2015-11-01 Phison Electronics Corp 映射資訊記錄方法、記憶體控制器與記憶體儲存裝置
US9519577B2 (en) 2013-09-03 2016-12-13 Sandisk Technologies Llc Method and system for migrating data between flash memory devices
US9442670B2 (en) 2013-09-03 2016-09-13 Sandisk Technologies Llc Method and system for rebalancing data stored in flash memory devices
KR102140512B1 (ko) * 2013-10-16 2020-08-03 삼성전자주식회사 불휘발성 메모리 장치, 불휘발성 메모리 장치를 포함하는 불휘발성 메모리 시스템 및 불휘발성 메모리 시스템의 동작 방법
IN2013CH05362A (ja) 2013-11-21 2015-05-29 Sandisk Technologies Inc
KR102166924B1 (ko) * 2013-12-26 2020-10-16 삼성전자주식회사 저장 장치의 구동 방법
CN106959822B (zh) * 2013-12-27 2020-02-07 威盛电子股份有限公司 数据储存装置及其数据写入方法
US9305665B2 (en) 2014-03-31 2016-04-05 Kabushiki Kaisha Toshiba Memory system and method of controlling memory system
US9928169B2 (en) * 2014-05-07 2018-03-27 Sandisk Technologies Llc Method and system for improving swap performance
US8891303B1 (en) 2014-05-30 2014-11-18 Sandisk Technologies Inc. Method and system for dynamic word line based configuration of a three-dimensional memory device
US9645749B2 (en) 2014-05-30 2017-05-09 Sandisk Technologies Llc Method and system for recharacterizing the storage density of a memory device or a portion thereof
US9552166B2 (en) * 2014-09-02 2017-01-24 Sandisk Technologies Llc. Process and apparatus to reduce declared capacity of a storage device by deleting data
US9524112B2 (en) * 2014-09-02 2016-12-20 Sandisk Technologies Llc Process and apparatus to reduce declared capacity of a storage device by trimming
US9563362B2 (en) * 2014-09-02 2017-02-07 Sandisk Technologies Llc Host system and process to reduce declared capacity of a storage device by trimming
US9519427B2 (en) * 2014-09-02 2016-12-13 Sandisk Technologies Llc Triggering, at a host system, a process to reduce declared capacity of a storage device
US9563370B2 (en) * 2014-09-02 2017-02-07 Sandisk Technologies Llc Triggering a process to reduce declared capacity of a storage device
US9582202B2 (en) 2014-09-02 2017-02-28 Sandisk Technologies Llc Process and apparatus to reduce declared capacity of a storage device by moving data
US9652153B2 (en) 2014-09-02 2017-05-16 Sandisk Technologies Llc Process and apparatus to reduce declared capacity of a storage device by reducing a count of logical addresses
US9524105B2 (en) * 2014-09-02 2016-12-20 Sandisk Technologies Llc Process and apparatus to reduce declared capacity of a storage device by altering an encoding format
US9582212B2 (en) 2014-09-02 2017-02-28 Sandisk Technologies Llc Notification of trigger condition to reduce declared capacity of a storage device
US9582220B2 (en) 2014-09-02 2017-02-28 Sandisk Technologies Llc Notification of trigger condition to reduce declared capacity of a storage device in a multi-storage-device storage system
US9582203B2 (en) 2014-09-02 2017-02-28 Sandisk Technologies Llc Process and apparatus to reduce declared capacity of a storage device by reducing a range of logical addresses
US9582193B2 (en) 2014-09-02 2017-02-28 Sandisk Technologies Llc Triggering a process to reduce declared capacity of a storage device in a multi-storage-device storage system
US9665311B2 (en) 2014-09-02 2017-05-30 Sandisk Technologies Llc Process and apparatus to reduce declared capacity of a storage device by making specific logical addresses unavailable
US9582201B2 (en) 2014-09-26 2017-02-28 Western Digital Technologies, Inc. Multi-tier scheme for logical storage management
US9690491B2 (en) * 2014-12-17 2017-06-27 Sandisk Technologies Llc System and method for managing data in a memory device
US9632705B2 (en) 2014-12-17 2017-04-25 Sandisk Technologies Llc System and method for adaptive memory layers in a memory device
CN105843748B (zh) * 2015-01-15 2019-06-11 华为技术有限公司 一种对内存中内存页的处理方法及装置
US10346039B2 (en) * 2015-04-21 2019-07-09 Toshiba Memory Corporation Memory system
US9639282B2 (en) 2015-05-20 2017-05-02 Sandisk Technologies Llc Variable bit encoding per NAND flash cell to improve device endurance and extend life of flash-based storage devices
US9606737B2 (en) 2015-05-20 2017-03-28 Sandisk Technologies Llc Variable bit encoding per NAND flash cell to extend life of flash-based storage devices and preserve over-provisioning
JP2017011580A (ja) * 2015-06-24 2017-01-12 キヤノン株式会社 通信装置およびその制御方法、プログラム
KR102501751B1 (ko) * 2015-09-22 2023-02-20 삼성전자주식회사 메모리 콘트롤러, 불휘발성 메모리 시스템 및 그 동작방법
KR102333220B1 (ko) 2015-09-24 2021-12-01 삼성전자주식회사 불휘발성 메모리 시스템의 동작 방법
US9946483B2 (en) 2015-12-03 2018-04-17 Sandisk Technologies Llc Efficiently managing unmapped blocks to extend life of solid state drive with low over-provisioning
US9946473B2 (en) 2015-12-03 2018-04-17 Sandisk Technologies Llc Efficiently managing unmapped blocks to extend life of solid state drive
CN105553727A (zh) * 2015-12-18 2016-05-04 北京奇虎科技有限公司 一种更新配置信息的方法、装置及系统
TWI614605B (zh) * 2016-03-31 2018-02-11 慧榮科技股份有限公司 資料儲存裝置及其資料維護方法
TWI603193B (zh) * 2016-03-31 2017-10-21 慧榮科技股份有限公司 資料儲存裝置及其資料維護方法
TWI622923B (zh) * 2016-05-04 2018-05-01 群聯電子股份有限公司 整理指令處理方法、記憶體控制電路單元與記憶體儲存裝置
CN107766262B (zh) * 2016-08-18 2021-09-14 北京忆恒创源科技股份有限公司 调节并发写命令数量的方法与装置
US10509722B2 (en) 2017-08-31 2019-12-17 Micron Technology, Inc. Memory device with dynamic cache management
KR20190063054A (ko) 2017-11-29 2019-06-07 삼성전자주식회사 메모리 시스템 및 이의 동작 방법
TWI687809B (zh) * 2018-02-13 2020-03-11 點序科技股份有限公司 快閃記憶體儲存裝置與寫入管理方法
KR20190099570A (ko) * 2018-02-19 2019-08-28 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
TWI679538B (zh) * 2018-03-31 2019-12-11 慧榮科技股份有限公司 資料儲存系統之控制單元以及邏輯至物理映射表更新方法
US10761773B2 (en) * 2018-04-02 2020-09-01 Micron Technology, Inc. Resource allocation in memory systems based on operation modes
US10755787B2 (en) 2018-06-28 2020-08-25 Apple Inc. Efficient post programming verification in a nonvolatile memory
US10762967B2 (en) 2018-06-28 2020-09-01 Apple Inc. Recovering from failure in programming a nonvolatile memory
KR102634631B1 (ko) * 2018-07-11 2024-02-08 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작방법
KR20200006829A (ko) * 2018-07-11 2020-01-21 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작방법
JP2020035128A (ja) * 2018-08-29 2020-03-05 キオクシア株式会社 メモリシステム
KR102593541B1 (ko) * 2018-11-29 2023-10-25 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작방법
US10915444B2 (en) * 2018-12-27 2021-02-09 Micron Technology, Inc. Garbage collection candidate selection using block overwrite rate
CN109815166B (zh) * 2018-12-28 2020-10-09 深圳市德明利技术股份有限公司 一种存储数据的动态回收处理方法及存储装置
US10936455B2 (en) 2019-02-11 2021-03-02 Apple Inc. Recovery of data failing due to impairment whose severity depends on bit-significance value
CN111562880A (zh) * 2019-02-14 2020-08-21 英韧科技(上海)有限公司 一种数据存储装置、系统及数据写入方法
TWI698749B (zh) * 2019-03-13 2020-07-11 慧榮科技股份有限公司 資料儲存裝置與資料處理方法
CN109979508A (zh) * 2019-03-15 2019-07-05 合肥沛睿微电子股份有限公司 固态硬盘装置与相关的固态硬盘控制电路
CN109992525A (zh) * 2019-04-01 2019-07-09 合肥沛睿微电子股份有限公司 快闪存储器控制器
US10949126B2 (en) * 2019-07-25 2021-03-16 ScaleFlux, Inc. Solid-state storage device speed performance and endurance through host-side data classification and embedded write caching
US10915394B1 (en) 2019-09-22 2021-02-09 Apple Inc. Schemes for protecting data in NVM device using small storage footprint
CN111159058B (zh) * 2019-12-27 2022-03-04 深圳大普微电子科技有限公司 一种磨损均衡方法、装置及非易失性的存储设备
US10971215B1 (en) 2020-02-24 2021-04-06 Western Digital Technologies, Inc. Dynamically adjust data transfer speed for non-volatile memory die interfaces
KR20210128780A (ko) * 2020-04-17 2021-10-27 에스케이하이닉스 주식회사 메모리 컨트롤러 및 이를 포함하는 저장 장치
CN111722804B (zh) * 2020-06-12 2022-07-08 浪潮电子信息产业股份有限公司 一种非易失内存调度的方法、系统、设备及可读存储介质
US11550657B1 (en) 2021-09-01 2023-01-10 Apple Inc. Efficient programming schemes in a nonvolatile memory
JP2023039459A (ja) * 2021-09-09 2023-03-22 キオクシア株式会社 メモリシステムおよび方法

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007257109A (ja) * 2006-03-22 2007-10-04 Matsushita Electric Ind Co Ltd 不揮発性記憶装置、そのデータ書き込み方法、不揮発性記憶システム及びメモリコントローラ
JP2008257773A (ja) * 2007-04-02 2008-10-23 Toshiba Corp 不揮発性半導体記憶装置、不揮発性半導体記憶装置の制御方法、不揮発性半導体記憶システム、及びメモリカード
JP2008276733A (ja) * 2007-04-06 2008-11-13 Toshiba Corp メモリシステム
JP2009217756A (ja) * 2008-03-12 2009-09-24 Toshiba Corp メモリシステム
JP2010152778A (ja) * 2008-12-26 2010-07-08 Hitachi Ulsi Systems Co Ltd 半導体記憶装置
JP2010152516A (ja) * 2008-12-24 2010-07-08 Toshiba Corp 不揮発性半導体メモリドライブ装置、情報処理装置および不揮発性半導体メモリドライブ装置における記憶領域の管理方法
JP2010157142A (ja) * 2008-12-27 2010-07-15 Toshiba Corp メモリシステム
JP2011248873A (ja) * 2010-05-25 2011-12-08 Samsung Electronics Co Ltd 半導体メモリ装置のブロック併合方法

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5671388A (en) * 1995-05-03 1997-09-23 Intel Corporation Method and apparatus for performing write operations in multi-level cell storage device
US20040133606A1 (en) * 2003-01-02 2004-07-08 Z-Force Communications, Inc. Directory aggregation for files distributed over a plurality of servers in a switched file system
US20040268098A1 (en) 2003-06-30 2004-12-30 Yoav Almog Exploiting parallelism across VLIW traces
US20060179236A1 (en) * 2005-01-13 2006-08-10 Hazim Shafi System and method to improve hardware pre-fetching using translation hints
US7363421B2 (en) * 2005-01-13 2008-04-22 Stmicroelectronics S.R.L. Optimizing write/erase operations in memory devices
KR100855467B1 (ko) * 2006-09-27 2008-09-01 삼성전자주식회사 이종 셀 타입을 지원하는 비휘발성 메모리를 위한 맵핑장치 및 방법
KR100771521B1 (ko) 2006-10-30 2007-10-30 삼성전자주식회사 멀티 레벨 셀을 포함하는 플래시 메모리 장치 및 그것의데이터 쓰기 방법
JP2010509704A (ja) * 2006-11-14 2010-03-25 ラムバス・インコーポレーテッド 低エネルギーメモリコンポーネント
KR100875539B1 (ko) * 2007-01-17 2008-12-26 삼성전자주식회사 프로그램 방식을 선택할 수 있는 메모리 시스템
US8370562B2 (en) 2007-02-25 2013-02-05 Sandisk Il Ltd. Interruptible cache flushing in flash memory systems
TW200841343A (en) 2007-04-02 2008-10-16 Apacer Technology Inc A data storage device consisting of NAND (Not-AND) flash memory and its data storing method
US20080282024A1 (en) * 2007-05-09 2008-11-13 Sudeep Biswas Management of erase operations in storage devices based on flash memories
US7743203B2 (en) * 2007-05-11 2010-06-22 Spansion Llc Managing flash memory based upon usage history
JP5087347B2 (ja) * 2007-09-06 2012-12-05 株式会社日立製作所 半導体記憶装置及び半導体記憶装置の制御方法
US8200904B2 (en) 2007-12-12 2012-06-12 Sandisk Il Ltd. System and method for clearing data from a cache
TWI397912B (zh) 2008-02-13 2013-06-01 Genesys Logic Inc 調整存取效能的快閃記憶體儲存裝置
TWI425523B (zh) * 2008-03-25 2014-02-01 Asmedia Technology Inc 混合型快閃儲存裝置及其操作方法
TWI437429B (zh) 2008-06-04 2014-05-11 A Data Technology Co Ltd 多通道混合密度記憶體儲存裝置及其控制方法
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
TWI385527B (zh) 2009-02-10 2013-02-11 Phison Electronics Corp Mlc nand型快閃記憶體儲存系統及其控制器與存取方法
US8438361B2 (en) * 2010-03-10 2013-05-07 Seagate Technology Llc Logical block storage in a storage device

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007257109A (ja) * 2006-03-22 2007-10-04 Matsushita Electric Ind Co Ltd 不揮発性記憶装置、そのデータ書き込み方法、不揮発性記憶システム及びメモリコントローラ
JP2008257773A (ja) * 2007-04-02 2008-10-23 Toshiba Corp 不揮発性半導体記憶装置、不揮発性半導体記憶装置の制御方法、不揮発性半導体記憶システム、及びメモリカード
JP2008276733A (ja) * 2007-04-06 2008-11-13 Toshiba Corp メモリシステム
JP2009217756A (ja) * 2008-03-12 2009-09-24 Toshiba Corp メモリシステム
JP2010152516A (ja) * 2008-12-24 2010-07-08 Toshiba Corp 不揮発性半導体メモリドライブ装置、情報処理装置および不揮発性半導体メモリドライブ装置における記憶領域の管理方法
JP2010152778A (ja) * 2008-12-26 2010-07-08 Hitachi Ulsi Systems Co Ltd 半導体記憶装置
JP2010157142A (ja) * 2008-12-27 2010-07-15 Toshiba Corp メモリシステム
JP2011248873A (ja) * 2010-05-25 2011-12-08 Samsung Electronics Co Ltd 半導体メモリ装置のブロック併合方法

Cited By (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014517425A (ja) * 2011-06-15 2014-07-17 アップル インコーポレイテッド Slc/mlc混成メモリのブロック管理構成
US10366003B2 (en) 2011-12-28 2019-07-30 Toshiba Memory Corporation Controller, storage device, and computer program product for writing and transfer process
US8990480B2 (en) 2012-03-15 2015-03-24 Kabushiki Kaisha Toshiba Semiconductor memory device and computer program product
JP2016508276A (ja) * 2013-01-14 2016-03-17 ウェスタン デジタル テクノロジーズ インコーポレーテッド ソリッドステートメモリにおける動作のモードを構成するシステム及び方法
US8990458B2 (en) 2013-02-28 2015-03-24 Kabushiki Kaisha Toshiba Controller, semiconductor storage device and method of controlling data writing
JP2015088121A (ja) * 2013-11-01 2015-05-07 株式会社東芝 メモリシステムおよび方法
US11955204B2 (en) 2014-08-15 2024-04-09 Micron Technology, Inc. Apparatuses and methods for concurrently accessing different memory planes of a memory
JP2017527897A (ja) * 2014-08-15 2017-09-21 マイクロン テクノロジー, インク. メモリの異なるメモリプレーンに同時にアクセスするための装置および方法
US11462250B2 (en) 2014-08-15 2022-10-04 Micron Technology, Inc. Apparatuses and methods for concurrently accessing different memory planes of a memory
JP2020144946A (ja) * 2014-08-15 2020-09-10 マイクロン テクノロジー,インク. メモリの異なるメモリプレーンに同時にアクセスするための装置および方法
US10755755B2 (en) 2014-08-15 2020-08-25 Micron Technology, Inc. Apparatuses and methods for concurrently accessing different memory planes of a memory
JP2018136970A (ja) * 2014-12-29 2018-08-30 東芝メモリ株式会社 情報処理装置
JP2016126737A (ja) * 2014-12-29 2016-07-11 株式会社東芝 キャッシュメモリ装置及びプログラム
US9798470B2 (en) 2015-01-23 2017-10-24 Toshiba Memory Corporation Memory system for storing and processing translation information
US11182074B2 (en) 2015-11-05 2021-11-23 Micron Technology, Inc. Apparatuses and methods for concurrently accessing multiple memory planes of a memory during a memory access operation
US11698725B2 (en) 2015-11-05 2023-07-11 Micron Technology, Inc. Apparatuses and methods for concurrently accessing multiple memory planes of a memory during a memory access operation
WO2018002999A1 (ja) * 2016-06-28 2018-01-04 株式会社日立製作所 記憶デバイス及びストレージ装置
WO2018051387A1 (ja) * 2016-09-13 2018-03-22 株式会社日立製作所 情報処理システムおよびデータ格納方法
US10838628B2 (en) 2017-11-06 2020-11-17 Hitachi, Ltd. Storage system and control method of maintaining reliability of a mounted flash storage
JP2019168822A (ja) * 2018-03-22 2019-10-03 東芝メモリ株式会社 ストレージデバイスおよびコンピュータシステム
JP7448569B2 (ja) 2019-07-01 2024-03-12 インターナショナル・ビジネス・マシーンズ・コーポレーション データ・ストレージ・システムにおけるブロック・モード・トグリング

Also Published As

Publication number Publication date
US20200409555A1 (en) 2020-12-31
EP2439645B1 (en) 2020-01-22
EP2439645A1 (en) 2012-04-11
CN102419735B (zh) 2015-02-25
US20180356984A1 (en) 2018-12-13
US11893238B2 (en) 2024-02-06
US20120079167A1 (en) 2012-03-29
US20170109050A1 (en) 2017-04-20
US20230152969A1 (en) 2023-05-18
KR20120031434A (ko) 2012-04-03
US20220100377A1 (en) 2022-03-31
US11579773B2 (en) 2023-02-14
US10871900B2 (en) 2020-12-22
US20240126433A1 (en) 2024-04-18
JP5066241B2 (ja) 2012-11-07
US20140379968A1 (en) 2014-12-25
US9910597B2 (en) 2018-03-06
US20180188963A1 (en) 2018-07-05
US10055132B2 (en) 2018-08-21
TW201214116A (en) 2012-04-01
US11216185B2 (en) 2022-01-04
US10877664B2 (en) 2020-12-29
TWI446168B (zh) 2014-07-21
CN102419735A (zh) 2012-04-18
US8832357B2 (en) 2014-09-09
KR101329937B1 (ko) 2013-11-14

Similar Documents

Publication Publication Date Title
JP5066241B2 (ja) メモリシステム
US10776278B2 (en) Storage control apparatus and computer-readable storage medium storing storage control program
KR101257691B1 (ko) 메모리 컨트롤러 및 이의 데이터 관리방법
JP2019133252A (ja) メモリシステム
JP6139381B2 (ja) メモリシステムおよび方法
JP2017111477A (ja) メモリシステムおよび制御方法
JP2017111476A (ja) メモリシステムおよび制御方法
JP2012141946A (ja) 半導体記憶装置
KR101155542B1 (ko) Ssd 장치의 매핑 테이블 관리 방법
JP6482322B2 (ja) メモリ装置及びプログラム
JP6595654B2 (ja) 情報処理装置
JP6378111B2 (ja) 情報処理装置及びプログラム
KR101157763B1 (ko) Trim 명령 처리 기능이 추가된 플래시 메모리 장치를 위한 가변 공간 페이지 사상 방법 및 그 장치
JP6721765B2 (ja) メモリシステムおよび制御方法
JP2019016386A (ja) メモリシステムおよび制御方法
JP2019016383A (ja) メモリシステムおよび制御方法

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120424

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120625

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120810

R151 Written notification of patent or utility model registration

Ref document number: 5066241

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150817

Year of fee payment: 3

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