JP6765321B2 - メモリシステムおよび制御方法 - Google Patents
メモリシステムおよび制御方法 Download PDFInfo
- Publication number
- JP6765321B2 JP6765321B2 JP2017036930A JP2017036930A JP6765321B2 JP 6765321 B2 JP6765321 B2 JP 6765321B2 JP 2017036930 A JP2017036930 A JP 2017036930A JP 2017036930 A JP2017036930 A JP 2017036930A JP 6765321 B2 JP6765321 B2 JP 6765321B2
- Authority
- JP
- Japan
- Prior art keywords
- block
- data
- nvm
- free
- pool
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
-
- H—ELECTRICITY
- H10—SEMICONDUCTOR DEVICES; ELECTRIC SOLID-STATE DEVICES NOT OTHERWISE PROVIDED FOR
- H10B—ELECTRONIC MEMORY DEVICES
- H10B41/00—Electrically erasable-and-programmable ROM [EEPROM] devices comprising floating gates
- H10B41/30—Electrically erasable-and-programmable ROM [EEPROM] devices comprising floating gates characterised by the memory core region
- H10B41/35—Electrically erasable-and-programmable ROM [EEPROM] devices comprising floating gates characterised by the memory core region with a cell select transistor, e.g. NAND
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/065—Replication mechanisms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0652—Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0658—Controller construction arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- H—ELECTRICITY
- H10—SEMICONDUCTOR DEVICES; ELECTRIC SOLID-STATE DEVICES NOT OTHERWISE PROVIDED FOR
- H10B—ELECTRONIC MEMORY DEVICES
- H10B99/00—Subject matter not provided for in other groups of this subclass
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/21—Employing a record carrier using a specific recording technology
- G06F2212/214—Solid state disk
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7202—Allocation control and policies
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/10—Programming or data input circuits
- G11C16/14—Circuits for erasing electrically, e.g. erase voltage switching circuits
- G11C16/16—Circuits for erasing electrically, e.g. erase voltage switching circuits for erasing blocks, e.g. arrays, words, groups
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Memory System (AREA)
- Read Only Memory (AREA)
Description
まず、図1を参照して、一実施形態に係るメモリシステムを含む情報処理システム1の構成を説明する。
ネームスペース100、101は、一つのNVMサブセット90を共有する。ネームスペース100、101と他のネームスペースとの間のダイコンテンションは生じないが、ネームスペース100、101間のGCコンテンションは生じうる。
ネームスペース102は、一つのNVMサブセット91を専有する。ネームスペース102と他のネームスペースとの間のダイコンテンション、GCコンテンションは生じない。
ネームスペース103は、2つのNVMサブセット92、93を専有する。ネームスペース103とNVMセット62を使用する他のネームスペースとの間のダイコンテンションは生じうるが、ネームスペース103と他のネームスペースとの間のGCコンテンションは生じない。
はじめに、フリーブロックプール80内の1つのフリーブロックがユーザインプットブロック210として割り当てられる。ユーザインプットブロック210とは、ホスト2からのライトデータを書き込むためのブロックのことであり、書き込み先ブロックとも云う。なお、ユーザインプットブロック210がすでに割り当てられていれば、この動作は実行されない。
ホスト2からのライトデータがライトバッファ30からユーザインプットブロック210に書き込まれる。ライトバッファ30にはネームスペース100またはネームスペース101に関連付けられたライトデータが一時的に格納されている。そして、NVMセット60に対応するルックアップテーブルが更新され、これによってライトデータに対応する論理アドレス(LBA)に、このライトデータが書き込まれたユーザインプットブロック210内の物理記憶位置を示す物理アドレスがマッピングされる。
ユーザインプットブロック210がライトデータで満たされると、そのユーザインプットブロック210は、NVMサブセット(データブロックプール)90に移動される。つまり、データで満たされたユーザインプットブロック210はNVMサブセット(データブロックプール)90によって管理される。
NVMセット60においてガベージコレクションの実行が必要になった場合、他のNVMセットとは独立して、NVMサブセット90内のブロック群のためのガベージコレクション動作が実行される。例えば、NVMサブセット90に含まれているブロック数が、NVMサブセット90に対応するある閾値X1よりも多い場合に、ガベージコレクション動作が必要と判断されてもよい。閾値X1は、NVMサブセット90用に割り当て可能なブロックの総数に基づいて決定されてもよい。例えば、NVMサブセット90用に割り当て可能なブロックの総数から所定数を引いた残りの値が、NVMサブセット90に対応するある閾値X1として利用されてもよい。
NVMサブセット90内のブロックの中から有効データと無効データとが混在する一つ以上のブロックがコピー元ブロックとして選択される。その選択されたブロックの有効データのみがGCインプットブロック200にコピーされる。そして、NVMセット60に対応するルックアップテーブルが更新され、これによって、コピーされた有効データに対応する論理アドレス(LBA)に、この有効データがコピーされたGCインプットブロック200内の物理記憶位置を示す物理アドレスがマッピングされる。
GCインプットブロック200が有効データで満たされると、GCインプットブロック200はNVMサブセット90に移動される。つまり、有効データで満たされたGCインプットブロック200はNVMサブセット(データブロックプール)90によって管理される。
NVMサブセット90によって管理されており且つ有効データを保持しないブロックは、NVMサブセット90からフリーブロックプール80に返却される。有効データを保持しないブロックは、ホスト書き込みによってその全てのデータが無効化されたブロック、またはガベージコレクション動作によってその全ての有効データがコピー先ブロックにコピーされたブロックである。
フリーブロックプール81内の1つのフリーブロックがユーザインプットブロック211として割り当てられる。
ホスト2からのライトデータがライトバッファ31からユーザインプットブロック211に書き込まれる。ライトバッファ31にはネームスペース102に関連付けられたライトデータが一時的に格納されている。そして、NVMセット61に対応するルックアップテーブルが更新され、これによってライトデータに対応する論理アドレス(LBA)に、このライトデータが書き込まれたユーザインプットブロック211内の物理記憶位置を示す物理アドレスがマッピングされる。
ユーザインプットブロック211がライトデータで満たされると、そのユーザインプットブロック211は、NVMサブセット(データブロックプール)91に移動される。つまり、データで満たされたユーザインプットブロック211はNVMサブセット(データブロックプール)91によって管理される。
NVMセット61においてガベージコレクションの実行が必要になった場合、他のNVMセットとは独立して、NVMサブセット91内のブロック群のためのガベージコレクション動作が実行される。例えば、NVMサブセット91に含まれているブロック数が、NVMサブセット91に対応するある閾値X1よりも多い場合に、ガベージコレクション動作が必要と判断されてもよい。閾値X1は、NVMサブセット91用に割り当て可能なブロックの総数に基づいて決定されてもよい。例えば、NVMサブセット91用に割り当て可能なブロックの総数から所定数を引いた残りの値が、NVMサブセット91に対応するある閾値X1として利用されてもよい。
NVMサブセット91内のブロックの中から有効データと無効データとが混在する一つ以上のブロックがコピー元ブロックとして選択される。その選択されたブロックの有効データのみがGCインプットブロック201にコピーされる。そして、NVMセット61に対応するルックアップテーブルが更新され、これによって、コピーされた有効データに対応する論理アドレス(LBA)に、この有効データがコピーされたGCインプットブロック201内の物理記憶位置を示す物理アドレスがマッピングされる。
GCインプットブロック201が有効データで満たされると、GCインプットブロック201はNVMサブセット91に移動される。つまり、有効データで満たされたGCインプットブロック201はNVMサブセット(データブロックプール)91によって管理される。
NVMサブセット91によって管理されており且つ有効データを保持しないブロックは、NVMサブセット91からフリーブロックプール81に返却される。有効データを保持しないブロックは、ホスト書き込みによってその全てのデータが無効化されたブロック、またはガベージコレクション動作によってその全ての有効データがコピー先ブロックにコピーされたブロックである。
フリーブロックプール82内の1つのフリーブロックがユーザインプットブロック214として割り当てられる。
ホスト2からのライトデータがライトバッファ34からユーザインプットブロック214に書き込まれる。ライトバッファ34にはネームスペース104または105に関連付けられたライトデータが一時的に格納されている。そして、NVMサブセット94に対応するルックアップテーブルが更新され、これによってライトデータに対応する論理アドレス(LBA)に、このライトデータが書き込まれたユーザインプットブロック214内の物理記憶位置を示す物理アドレスがマッピングされる。
ユーザインプットブロック214がライトデータで満たされると、そのユーザインプットブロック214は、NVMサブセット(データブロックプール)94に移動される。つまり、データで満たされたユーザインプットブロック214はNVMサブセット(データブロックプール)94によって管理される。
NVMサブセット(データブロックプール)94においてガベージコレクションの実行が必要になった場合、他のNVMセットおよびNVMセット62内の他のNVMサブセットとは独立して、NVMサブセット94内のブロック群のためのガベージコレクション動作が実行される。例えば、NVMサブセット94に含まれているブロック数が、NVMサブセット94に対応するある閾値X1よりも多い場合に、ガベージコレクション動作が必要と判断されてもよい。閾値X1は、NVMサブセット94用に割り当て可能なブロックの総数に基づいて決定されてもよい。例えば、NVMサブセット94用に割り当て可能なブロックの総数から所定数を引いた残りの値が、NVMサブセット94に対応するある閾値X1として利用されてもよい。
NVMサブセット94内のブロックの中から有効データと無効データとが混在する一つ以上のブロックがコピー元ブロックとして選択される。その選択されたブロックの有効データのみがGCインプットブロック204にコピーされる。そして、NVMサブセット94に対応するルックアップテーブルが更新され、これによって、コピーされた有効データに対応する論理アドレス(LBA)に、この有効データがコピーされたGCインプットブロック204内の物理記憶位置を示す物理アドレスがマッピングされる。
GCインプットブロック204が有効データで満たされると、GCインプットブロック204はNVMサブセット94に移動される。つまり、有効データで満たされたGCインプットブロック204はNVMサブセット(データブロックプール)94によって管理される。
NVMサブセット94によって管理されており且つ有効データを保持しないブロックは、NVMサブセット94からフリーブロックプール82に返却される。有効データを保持しないブロックは、ホスト書き込みによってその全てのデータが無効化されたブロック、またはガベージコレクション動作によってその全ての有効データがコピー先ブロックにコピーされたブロックである。
図10では、NAND型フラッシュメモリ5内の多数のNAND型フラッシュメモリダイが2つのNVMセット130、131に分類されている場合が例示されている。NVMセット130、131は、図6で説明した分離されたNVMセット110、111にそれぞれ対応する。NVMセット130は、チャンネルCh0にそれぞれ接続されたNAND型フラッシュメモリダイD0〜D7を含み、NVMセット131は、チャンネルCh1にそれぞれ接続されたNAND型フラッシュメモリダイD10〜D17を含む。
コピー先NVMセット(NVMセット61)では、フリーブロックプール81内の1つのフリーブロックがユーザインプットブロック211として割り当てられる。
ホスト2からのライトデータがライトバッファ31からユーザインプットブロック211に書き込まれる。通常、ライトバッファ31には、コピー先NVMセットに対応するネームスペース102に関連付けられたライトデータが格納されるが、NVMセット間コピー動作が開始された後は、コピー元NVMセットに対応するネームスペース100または101に関連付けられたライトデータがライトバッファ31に格納される。そして、NVMサブセット90に対応するルックアップテーブルが更新され、これによってライトデータに対応する論理アドレス(LBA)に、このライトデータが書き込まれたユーザインプットブロック211内の物理記憶位置を示す物理アドレスがマッピングされる。
ユーザインプットブロック211がライトデータで満たされると、そのユーザインプットブロック211は、NVMサブセット(データブロックプール)91に移動される。つまり、データで満たされたユーザインプットブロック211はNVMサブセット(データブロックプール)91によって管理される。
コピー先NVMセット(NVMセット61)において、フリーブロックプール81内の1つのフリーブロックがGCインプットブロック201として割り当てられる。
コピー元NVMセット(NVMセット60)のNVMサブセット90内のブロックから、有効データを保持するブロックがコピー元ブロックとして選択される。そして、このコピー元ブロック内の有効データのみがコピー先NVMセット(NVMセット61)のGCインプットブロック(コピー先ブロック)201にコピーされる。この場合、まず、このコピー元ブロックからコピー対象の有効データが選択される。そして、この選択された有効データがこのコピー元ブロックから読み出され、そしてGCインプットブロック(コピー先ブロック)201に書き込まれる。
コピー先NVMセット(NVMセット61)において、GCインプットブロック201がコピー元NVMセット(NVMセット60)のブロックからの有効データで満たされると、GCインプットブロック201はNVMサブセット91に移動される。つまり、有効データで満たされたGCインプットブロック201はNVMサブセット(データブロックプール)91によって管理される。
コピー先NVMセット(NVMセット61)において、NVMサブセット91によって管理されており且つ有効データを保持しないブロックは、NVMサブセット91からフリーブロックプール81に返却される。例えば、NVMサブセット91内のあるブロックに保持されている全てのデータが、ユーザインプットブロック211への新たなライトデータの書き込みによって無効化されると、このブロックが、NVMサブセット91からフリーブロックプール81に返却される。
コピー元NVMセット(NVMセット60)において、コピー元ブロックの有効データがGCインプットブロック201にコピーされることによってこのコピー元ブロックに有効データが存在しなくなった場合、このコピー元ブロックは、NVMサブセット90からフリーブロックプール80に返却される。
NVMセット間コピー動作が実行される前、NVMサブセット90に対応するLUT40は、コピー元NVMセット(NVMセット60)の物理アドレスのみを保持している。
NVMセット交換動作の実行前において、NVMセット#1(NVMセット60)と、NVMセット#2(NVMセット61)では、ホスト書き込み/ガベージコレクション動作が互いに独立して実行されている。詳しくは、図4で説明した通りである。
(1)ユーザインプットブロックの割り当て
NVMセット#1では、フリーブロックプール80内の1つのブロックがユーザインプットブロック210として割り当てられる。また、NVMセット#2では、フリーブロックプール81内の1つのブロックがユーザインプットブロック211として割り当てられる。
ホスト2からのライトデータがライトバッファ30からユーザインプットブロック210に書き込まれる。通常、ライトバッファ30には、NVMセット#1(NVMセット60)に対応するネームスペース100またはネームスペース101に関連付けられたライトデータが格納されるが、NVMセット交換動作が開始された後は、NVMセット#2(NVMセット61)に対応するネームスペース102に関連付けられたライトデータがライトバッファ30に格納される。そして、NVMセット#2(NVMセット61)に対応するルックアップテーブルが更新され、これによってライトデータに対応する論理アドレス(LBA)に、このライトデータが書き込まれたユーザインプットブロック210内の物理記憶位置を示す物理アドレスがマッピングされる。
ユーザインプットブロック210がライトデータで満たされると、そのユーザインプットブロック210は、NVMサブセット(データブロックプール)90に移動される。つまり、データで満たされたユーザインプットブロック210はNVMサブセット(データブロックプール)90によって管理される。
NVMセット#1(NVMセット60)において、フリーブロックプール80内の1つのフリーブロックがGCインプットブロック200として割り当てられる。
コピー元NVMセット(NVMセット60)のNVMサブセット90内のブロックから、有効データを保持するブロックがコピー元ブロックとして選択される。そして、このコピー元ブロック内の有効データのみが、NVMセット#2(NVMセット61)のGCインプットブロック201にコピーされる。そして、NVMサブセット90に対応するルックアップテーブルが更新され、これによって、コピーされた有効データに対応する論理アドレス(LBA)に、この有効データがコピーされたGCインプットブロック201内の物理記憶位置を示す物理アドレスがマッピングされる。
NVMセット#1(NVMセット60)において、GCインプットブロック200がNVMセット#2(NVMセット61)の1以上のブロックからの有効データで満たされると、GCインプットブロック200はNVMサブセット90に移動される。つまり、有効データで満たされたGCインプットブロック200はNVMサブセット(データブロックプール)90によって管理される。
NVMセット#1(NVMセット60)において、NVMサブセット90によって管理されており且つ有効データを保持しないブロックは、NVMサブセット90からフリーブロックプール80に返却される。例えば、NVMサブセット90内のあるブロックによって保持されている全てのデータが、ユーザインプットブロック210への新たなライトデータの書き込みによって無効化されると、このブロックが、NVMサブセット90からフリーブロックプール80に返却される。
いま、NAND型フラッシュメモリダイ600〜606、610〜616、620〜626、…640〜646を含むNVMセット160が利用されている場合を想定する。このNVMセット160には、フリーブロックプール180が存在する。フリーブロックプール180は、NVMサブセット190BおよびNVMサブセット190Cによって共有されている。さらに、NVMサブセット190Bに対応してライトバッファ130Bが設けられ、NVMサブセット190Cに対応してライトバッファ130Cが設けられている。
元のNVMセット160に対応するフリーブロックプール180内の1つのフリーブロックがNVMサブセット190Bに対応するユーザインプットブロック410として割り当てられる。また、フリーブロックプール180内の1つのフリーブロックがNVMサブセット190Cに対応するユーザインプットブロック411として割り当てられる。なお、ユーザインプットブロック410,411がすでに割り当てられていれば、この動作は実行されない。
ホスト2からのライトデータがライトバッファ130Bからユーザインプットブロック410に書き込まれる。そして、NVMサブセット190Bに対応するルックアップテーブルが更新され、これによってライトデータに対応する論理アドレス(LBA)に、このライトデータが書き込まれたユーザインプットブロック410内の物理記憶位置を示す物理アドレスがマッピングされる。
ユーザインプットブロック410がライトデータで満たされると、そのユーザインプットブロック410は、NVMサブセット(データブロックプール)190Bに移動される。つまり、データで満たされたユーザインプットブロック410はNVMサブセット(データブロックプール)190Bによって管理される。
元のNVMセット(NVMセット160)において、フリーブロックプール180内のフリーブロックから1つのブロックがNVMサブセット190Bに対応するGCインプットブロック400として割り当てられる。また、フリーブロックプール180内のフリーブロックから1つのブロックがNVMサブセット190Cに対応するGCインプットブロック401として割り当てられる。
NVMサブセット190B(またはNVMサブセット190C)内のブロックから、有効データと無効データとが混在する一つ以上のブロックがコピー元ブロックとして選択され、コピー元ブロック内の有効データのみがGCインプットブロック400(またはGCインプットブロック401)にコピーされる。そして、NVMサブセット190B(またはNVMサブセット190C)に対応するルックアップテーブルが更新され、これによって、コピーされた有効データに対応する論理アドレス(LBA)に、この有効データがコピーされたGCインプットブロック400(またはGCインプットブロック401)内の物理記憶位置を示す物理アドレスがマッピングされる。
GCインプットブロック400(またはGCインプットブロック401)が有効データで満たされると、GCインプットブロック400(またはGCインプットブロック401)はNVMサブセット190B(またはNVMサブセット190C)に移動される。つまり、有効データで満たされたGCインプットブロックは対応するNVMサブセット(データブロックプール)によって管理される。
NVMサブセット190B(またはNVMサブセット190C)によって管理されており且つ有効データを保持しないブロックは、フリーブロックに返却される。この場合、新たなNVMセット161に割り当てるべきダイ集合に属さないブロックは、NVMサブセット190B(またはNVMサブセット190C)からフリーブロックプール180に返却される。一方、新たなNVMセット161に割り当てるべきダイ集合に属さないブロックは、NVMサブセット190B(またはNVMサブセット190C)から新NVMセットのフリーブロックプール181に返却される。
図27には、NVMセット#1(NVMセット163)およびNVMセット#2(NVMセット164)をNVMセット#3(NVMセット165)に結合する動作が示されている。
NVMセット結合動作が実行される前において、NVMセット#1〜#3では、互いに独立してライトデータの書き込み動作およびガベージコレクション動作が実行される。
フリーブロックプール183内の1つのフリーブロックがユーザインプットブロック413として割り当てられる。また、フリーブロックプール184内の1つのフリーブロックがユーザインプットブロック414として割り当てられる。さらにフリーブロックプール185内の1つのフリーブロックがユーザインプットブロック415として割り当てられる。なお、ユーザインプットブロック413,414,415がすでに割り当てられていれば、この動作は実行されない。
NVMセット#1(NVMセット163)において、ホスト2からのライトデータがライトバッファ130Aからユーザインプットブロック413に書き込まれる。ライトバッファ130AにはNVMサブセット190Aに対応付けられたライトデータが一時的に格納されている。そして、NVMセット163に対応するルックアップテーブルが更新され、これによってライトデータに対応する論理アドレス(LBA)に、このライトデータが書き込まれたユーザインプットブロック413内の物理記憶位置を示す物理アドレスがマッピングされる。
NVMセット#3において、ユーザインプットブロック415がライトデータで満たされると、そのユーザインプットブロック415は、NVMサブセット(データブロックプール)190Cに移動される。つまり、データで満たされたユーザインプットブロック415はNVMサブセット(データブロックプール)190Cによって管理される。
NVMセット#1内のユーザインプットブロック413がライトデータで満たされると、そのユーザインプットブロック413は、NVMセット#3のNVMサブセット190Cに移動される。つまり、データで満たされたユーザインプットブロック413はNVMサブセット(データブロックプール)190Cによって管理される。
NVMサブセット(データブロックプール)190Aにおいてガベージコレクションの実行が必要になった場合、他のNVMセットとは独立して、NVMサブセット190A内のブロック群のためのガベージコレクション動作が実行される。例えば、NVMサブセット190Aに含まれているブロック数が、NVMサブセット190Aに対応するある閾値X1よりも多い場合に、ガベージコレクション動作が必要と判断されてもよい。閾値X1は、NVMサブセット190A用に割り当て可能なブロックの総数に基づいて決定されてもよい。例えば、NVMサブセット190A用に割り当て可能なブロックの総数から所定数を引いた残りの値が、NVMサブセット190Aに対応するある閾値X1として利用されてもよい。
NVMサブセット190A内のブロックの中から有効データと無効データとが混在する一つ以上のブロックがコピー元ブロックとして選択される。その選択されたブロックの有効データのみがGCインプットブロック403にコピーされる。そして、NVMセット163に対応するルックアップテーブルが更新され、これによって、コピーされた有効データに対応する論理アドレス(LBA)に、この有効データがコピーされたGCインプットブロック403内の物理記憶位置を示す物理アドレスがマッピングされる。
NVMセット#3において、GCインプットブロック405が有効データで満たされると、GCインプットブロック403はNVMサブセット190Cに移動される。つまり、有効データで満たされたGCインプットブロック405はNVMサブセット(データブロックプール)190Cによって管理される。
NVMセット#1内のGCインプットブロック403が有効データで満たされると、GCインプットブロック403はNVMセット#3内のNVMサブセット190Cに移動される。有効データで満たされたユーザインプットブロック403はNVMサブセット(データブロックプール)190Cによって管理される。
NVMセット#3において、NVMサブセット190Cによって管理されており且つ有効データを保持しないブロックは、NVMサブセット190Cからフリーブロックプール185に返却される。有効データを保持しないブロックは、ホスト書き込みによってその全てのデータが無効化されたブロック、またはガベージコレクション動作によってその全ての有効データがコピー先ブロックにコピーされたブロックである。
NVMサブセット190AのブロックがNVMセット#3のNVMサブセット190Cに移動される。つまり、NVMサブセット190AのブロックはNVMサブセット(データブロックプール)190Cによって管理される。
NVMセット#1のフリーブロックプール183内のフリーブロックがNVMセット#3のフリーブロックプール185に移動される。また、NVMセット#2のフリーブロックプール184内のフリーブロックがNVMセット#3のフリーブロックプール185に移動される。
Claims (15)
- ホストに接続可能なメモリシステムであって、
複数のチャンネルに接続された複数の不揮発性メモリダイを含む不揮発性メモリであって、各不揮発性メモリダイが複数のブロックを含む、不揮発性メモリと、
前記複数のチャンネルを介して前記不揮発性メモリを制御するように構成されたコントローラとを具備し、
前記コントローラは、
前記複数の不揮発性メモリダイの各々が一つのダイグループにのみ属するように前記複数の不揮発性メモリダイを複数のダイグループに分類し、
各ダイグループに対応する少なくとも一つの領域を含む複数の領域のいずれか一つを指定する前記ホストからのI/Oコマンドに応じて、前記複数のダイグループ内の一つのダイグループに対するデータ書き込み/読み出し動作を実行し、
前記不揮発性メモリのフリーブロック群を、前記複数のダイグループに対応する複数のフリーブロックプールによってダイグループ毎に個別に管理し、
前記複数のダイグループの各々について、対応するフリーブロックプール内のフリーブロックの一つをユーザデータが書き込まれるべきブロックとして割り当てる動作と、前記ユーザデータを前記割り当てられたブロックに書き込む動作と、前記ユーザデータで満たされた前記ブロックをデータブロックプールによって管理する動作と、前記データブロックプールによって管理され且つ有効データを保持しないブロックを前記対応するフリーブロックプールに返却する動作とを実行するように構成されているメモリシステム。 - 前記複数のダイグループは、第1のダイグループと第2のダイグループとを含み、
前記第1のダイグループに属するフリーブロック群は、前記第1のダイグループに対応する第1のフリーブロックプールによって管理され、前記第2のダイグループに属するフリーブロック群は、前記第2のダイグループに対応する第2のフリーブロックプールによって管理され、
前記第1のフリーブロックプールは、前記第1のダイグループに属し且つ有効データを保持するブロックそれぞれを管理する第1のデータブロックプールに専用のフリーブロックプールであり、前記第2のフリーブロックプールは、前記第2のダイグループに属し且つ有効データを保持するブロックそれぞれを管理する複数の第2のデータブロックプールによって共有される共有フリーブロックプールである請求項1記載のメモリシステム。 - 前記コントローラは、
前記第1のデータブロックプール内のブロック群のガベージコレクションにおいては、前記第1のフリーブロックプール内のフリーブロックの一つを第1のコピー先ブロックとして割り当て、前記第1のデータブロックプールに含まれ且つ有効データと無効データとが混在する一つ以上のブロックから有効データのみを前記第1のコピー先ブロックにコピーし、前記第1のコピー先ブロックへの前記有効データのコピーによって無効データのみになった前記一つ以上のブロックを前記第1のフリーブロックプールに返却する、動作を実行し、
前記複数の第2のデータブロックプールの一つの第2のデータブロックプール内のブロック群のガベージコレクションにおいては、前記複数の第2のデータブロックプールによって共有される前記第2のフリーブロックプール内のフリーブロックの一つを第2のコピー先ブロックとして割り当て、前記一つの第2のデータブロックプールに含まれ且つ有効データと無効データとが混在する一つ以上のブロックから有効データのみを前記第2のコピー先ブロックにコピーし、前記第2のコピー先ブロックへの前記有効データのコピーによって無効データのみになった前記一つ以上のブロックを前記第2のフリーブロックプールに返却する、動作を実行するように構成されている請求項2記載のメモリシステム。 - 前記複数のダイグループは、第1のダイグループと第2のダイグループとを含み、
前記第1のダイグループに属するフリーブロック群は、前記第1のダイグループに対応する第1のフリーブロックプールによって管理され、前記第2のダイグループに属するフリーブロック群は、前記第2のダイグループに対応する第2のフリーブロックプールによって管理され、
前記第1のフリーブロックプールは、前記第1のダイグループに属し且つ有効データを保持するブロックそれぞれを管理する第1のデータブロックプールに専用のフリーブロックプールであり、前記第2のフリーブロックプールは、前記第2のダイグループに属し且つ有効データを保持するブロックそれぞれを管理する第2のデータブロックプールに専用のフリーブロックプールである請求項1記載のメモリシステム。 - 前記コントローラは、
前記第1のデータブロックプール内のブロック群のガベージコレクションにおいては、前記第1のフリーブロックプール内のフリーブロックの一つを第1のコピー先ブロックとして割り当て、前記第1のデータブロックプールに含まれ且つ有効データと無効データとが混在する一つ以上のブロックから有効データのみを前記第1のコピー先ブロックにコピーし、前記第1のコピー先ブロックへの前記有効データのコピーによって無効データのみになった前記一つ以上のブロックを前記第1のフリーブロックプールに返却する、動作を実行し、
前記第2のデータブロックプール内のブロック群のガベージコレクションにおいては、前記第2のフリーブロックプール内のフリーブロックの一つを第2のコピー先ブロックとして割り当て、前記第2のデータブロックプールに含まれ且つ有効データと無効データとが混在する一つ以上のブロックから有効データのみを前記第2のコピー先ブロックにコピーし、前記第2のコピー先ブロックへの前記有効データのコピーによって無効データのみになった前記一つ以上のブロックを前記第2のフリーブロックプールに返却する、動作を実行するように構成されている請求項4記載のメモリシステム。 - 前記複数のダイグループは、第1のダイグループと第2のダイグループとを含み、
前記第1のダイグループに属するフリーブロック群は、前記第1のダイグループに対応する第1のフリーブロックプールによって管理され、前記第2のダイグループに属するフリーブロック群は、前記第2のダイグループに対応する第2のフリーブロックプールによって管理され、
前記第1のフリーブロックプールは、前記第1のダイグループに属し且つ有効データを保持するブロックそれぞれを管理する複数の第1のデータブロックプールによって共有される共有フリーブロックプールであり、前記第2のフリーブロックプールは、前記第2のダイグループに属し且つ有効データを保持するブロックそれぞれを管理する複数の第2のデータブロックプールによって共有される共有フリーブロックプールである請求項1記載のメモリシステム。 - 前記コントローラは、
前記複数の第1のデータブロックプールの一つの第1のデータブロックプール内のブロック群のガベージコレクションにおいては、前記複数の第1のデータブロックプールによって共有される前記第1のフリーブロックプール内のフリーブロックの一つを第1のコピー先ブロックとして割り当て、前記一つの第1のデータブロックプールに含まれ且つ有効データと無効データとが混在する一つ以上のブロックから有効データのみを前記第1のコピー先ブロックにコピーし、前記第1のコピー先ブロックへの前記有効データのコピーによって無効データのみになった前記一つ以上のブロックを前記第1のフリーブロックプールに返却する、動作を実行し、
前記複数の第2のデータブロックプールの一つの第2のデータブロックプール内のブロック群のガベージコレクションにおいては、前記複数の第2のデータブロックプールによって共有される前記第2のフリーブロックプール内のフリーブロックの一つを第2のコピー先ブロックとして割り当て、前記一つの第2のデータブロックプールに含まれ且つ有効データと無効データとが混在する一つ以上のブロックから有効データのみを前記第2のコピー先ブロックにコピーし、前記第2のコピー先ブロックへの前記有効データのコピーによって無効データのみになった前記一つ以上のブロックを前記第2のフリーブロックプールに返却する、動作を実行するように構成されている請求項6記載のメモリシステム。 - 前記複数のダイグループは、前記複数のチャンネルに跨がる第1のダイグループであって、前記複数のチャンネルにそれぞれ接続された複数の第1の不揮発性メモリダイの集合を含む第1のダイグループと、前記複数のチャンネルに跨がる第2のダイグループであって、前記複数のチャンネルにそれぞれ接続された複数の第2の不揮発性メモリダイの集合を含む第2のダイグループとを含む請求項1記載のメモリシステム。
- 前記複数のダイグループは、前記複数のチャンネルの第1のチャンネルにそれぞれ接続された複数の第1の不揮発性メモリダイの集合を含む第1のダイグループと、前記複数のチャンネルの第2のチャンネルにそれぞれ接続された複数の第2の不揮発性メモリダイの集合を含む第2のダイグループとを含む請求項1記載のメモリシステム。
- ホストに接続可能なメモリシステムであって、
複数のチャンネルに接続された複数の不揮発性メモリダイを含む不揮発性メモリであって、各不揮発性メモリダイが複数のブロックを含む、不揮発性メモリと、
前記複数のチャンネルを介して前記不揮発性メモリを制御するように構成されたコントローラとを具備し、
前記コントローラは、
前記複数の不揮発性メモリダイを、複数の第1の不揮発性メモリダイを含む第1のダイグループと、前記複数の第1の不揮発性メモリダイとは異なる複数の第2の不揮発性メモリダイを含む第2のダイグループとに分類し、
前記第1のダイグループに対応する第1領域を指定する前記ホストからの第1のI/Oコマンドに応じて、前記第1のダイグループに対するデータ書き込み/読み出し動作を実行し、前記第2のダイグループに対応する第2領域を指定する前記ホストからの第2のI/Oコマンドに応じて、前記第2のダイグループに対するデータ書き込み/読み出し動作を実行し、
前記第1のダイグループのフリーブロック群を前記第1のダイグループに対応する第1のフリーブロックプールによって管理し、前記第2のダイグループのフリーブロック群を前記第2のダイグループに対応する第2のフリーブロックプールによって管理し、
前記第1のフリーブロックプール内のフリーブロックの一つを前記第1領域に対応する第1のユーザデータが書き込まれるべきブロックとして割り当て、前記第1のユーザデータを前記割り当てられたブロックに書き込み、前記第1のユーザデータで満たされた前記ブロックを第1のデータブロックプールによって管理し、前記第1のデータブロックプールによって管理され且つ有効データを保持しないブロックを前記第1のフリーブロックプールに返却する、動作を実行し、
前記第2のフリーブロックプール内のフリーブロックの一つを前記第2領域に対応する第2のユーザデータが書き込まれるべきブロックとして割り当て、前記第2のユーザデータを前記割り当てられたブロックに書き込み、前記第2のユーザデータで満たされた前記ブロックを第2のデータブロックプールによって管理し、前記第2のデータブロックプールによって管理され且つ有効データを保持しないブロックを前記第2のフリーブロックプールに返却する、動作を実行するように構成されているメモリシステム。 - 複数のチャンネルに接続された複数の不揮発性メモリダイを含む不揮発性メモリを、コントローラによって、前記複数のチャンネルを介して制御する制御方法であって、各不揮発性メモリダイが複数のブロックを含み、
前記複数の不揮発性メモリダイの各々が一つのダイグループにのみ属するように前記複数の不揮発性メモリダイを複数のダイグループに分類することと、
各ダイグループに対応する少なくとも一つの領域を含む複数の領域のいずれか一つを指定するホストからのI/Oコマンドに応じて、前記複数のダイグループ内の一つのダイグループに対するデータ書き込み/読み出し動作を実行することと、
前記不揮発性メモリのフリーブロック群を、前記複数のダイグループに対応する複数のフリーブロックプールによってダイグループ毎に個別に管理することと、
前記複数のダイグループの各々について、対応するフリーブロックプール内のフリーブロックの一つをユーザデータが書き込まれるべきブロックとして割り当てる動作と、前記ユーザデータを前記割り当てられたブロックに書き込む動作と、前記ユーザデータで満たされた前記ブロックをデータブロックプールによって管理する動作と、前記データブロックプールによって管理され且つ有効データを保持しないブロックを前記対応するフリーブロックプールに返却する動作とを実行することとを具備する制御方法。 - 前記複数のダイグループは、第1のダイグループと第2のダイグループとを含み、
前記第1のダイグループに属するフリーブロック群は、前記第1のダイグループに対応する第1のフリーブロックプールによって管理され、前記第2のダイグループに属するフリーブロック群は、前記第2のダイグループに対応する第2のフリーブロックプールによって管理され、
前記第1のフリーブロックプールは、前記第1のダイグループに属し且つ有効データを保持するブロックそれぞれを管理する第1のデータブロックプールに専用のフリーブロックプールであり、前記第2のフリーブロックプールは、前記第2のダイグループに属し且つ有効データを保持するブロックそれぞれを管理する複数の第2のデータブロックプールによって共有される共有フリーブロックプールである請求項11記載の制御方法。 - 前記第1のデータブロックプール内のブロック群のガベージコレクションにおいては、前記第1のフリーブロックプール内のフリーブロックの一つを第1のコピー先ブロックとして割り当て、前記第1のデータブロックプールに含まれ且つ有効データと無効データとが混在する一つ以上のブロックから有効データのみを前記第1のコピー先ブロックにコピーし、前記第1のコピー先ブロックへの前記有効データのコピーによって無効データのみになった前記一つ以上のブロックを前記第1のフリーブロックプールに返却する、動作を実行することと、
前記複数の第2のデータブロックプールの一つの第2のデータブロックプール内のブロック群のガベージコレクションにおいては、前記複数の第2のデータブロックプールによって共有される前記第2のフリーブロックプール内のフリーブロックの一つを第2のコピー先ブロックとして割り当て、前記一つの第2のデータブロックプールに含まれ且つ有効データと無効データとが混在する一つ以上のブロックから有効データのみを前記第2のコピー先ブロックにコピーし、前記第2のコピー先ブロックへの前記有効データのコピーによって無効データのみになった前記一つ以上のブロックを前記第2のフリーブロックプールに返却する、動作を実行することとをさらに具備する請求項12記載の制御方法。 - 前記分類することは、前記複数の不揮発性メモリダイを、前記複数のチャンネルに跨がる第1のダイグループであって、前記複数のチャンネルにそれぞれ接続された複数の第1の不揮発性メモリダイの集合を含む第1のダイグループと、前記複数のチャンネルに跨がる第2のダイグループであって、前記複数のチャンネルにそれぞれ接続された複数の第2の不揮発性メモリダイの集合を含む第2のダイグループとに分類することを含む請求項11記載の制御方法。
- 前記分類することは、前記複数の不揮発性メモリダイを、前記複数のチャンネルの第1のチャンネルにそれぞれ接続された複数の第1の不揮発性メモリダイの集合を含む第1のダイグループと、前記複数のチャンネルの第2のチャンネルにそれぞれ接続された複数の第2の不揮発性メモリダイの集合を含む第2のダイグループとに分類することを含む請求項11記載の制御方法。
Priority Applications (9)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2017036930A JP6765321B2 (ja) | 2017-02-28 | 2017-02-28 | メモリシステムおよび制御方法 |
TW106122780A TWI640016B (zh) | 2017-02-28 | 2017-07-07 | Memory system and control method |
TW107121159A TWI734011B (zh) | 2017-02-28 | 2017-07-07 | 記憶體系統及控制方法 |
TW110119528A TWI765725B (zh) | 2017-02-28 | 2017-07-07 | 控制器 |
CN202110196427.3A CN112732200B (zh) | 2017-02-28 | 2017-08-04 | 存储***和控制方法 |
CN201710659407.9A CN108509146B (zh) | 2017-02-28 | 2017-08-04 | 存储***和控制方法 |
US15/700,365 US10103158B2 (en) | 2017-02-28 | 2017-09-11 | Memory system and method for controlling nonvolatile memory |
US16/126,231 US10418371B2 (en) | 2017-02-28 | 2018-09-10 | Memory system and method for controlling nonvolatile memory |
US17/087,268 USRE49508E1 (en) | 2017-02-28 | 2020-11-02 | Memory system and method for controlling nonvolatile memory |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2017036930A JP6765321B2 (ja) | 2017-02-28 | 2017-02-28 | メモリシステムおよび制御方法 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2020145847A Division JP7132291B2 (ja) | 2020-08-31 | 2020-08-31 | メモリシステムおよび制御方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2018142236A JP2018142236A (ja) | 2018-09-13 |
JP6765321B2 true JP6765321B2 (ja) | 2020-10-07 |
Family
ID=63246459
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2017036930A Active JP6765321B2 (ja) | 2017-02-28 | 2017-02-28 | メモリシステムおよび制御方法 |
Country Status (4)
Country | Link |
---|---|
US (3) | US10103158B2 (ja) |
JP (1) | JP6765321B2 (ja) |
CN (2) | CN108509146B (ja) |
TW (3) | TWI640016B (ja) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6765321B2 (ja) * | 2017-02-28 | 2020-10-07 | キオクシア株式会社 | メモリシステムおよび制御方法 |
US20180335975A1 (en) * | 2017-05-16 | 2018-11-22 | Lenovo Enterprise Solutions (Singapore) Pte. Ltd. | Translating a host data storage command into multiple disk commands |
US10915448B2 (en) * | 2017-08-22 | 2021-02-09 | Seagate Technology Llc | Storage device initiated copy back operation |
KR20190105346A (ko) * | 2018-03-05 | 2019-09-17 | 삼성전자주식회사 | 메모리 패키지 및 메모리 장치 |
US11520696B2 (en) * | 2018-06-28 | 2022-12-06 | Seagate Technology Llc | Segregating map data among different die sets in a non-volatile memory |
KR20200027858A (ko) | 2018-09-05 | 2020-03-13 | 에스케이하이닉스 주식회사 | 메모리 컨트롤러 및 이를 포함하는 메모리 시스템 |
US10705954B2 (en) * | 2018-10-29 | 2020-07-07 | Vmware, Inc. | Efficiently purging non-active blocks in NVM regions while preserving large pages |
US11249900B2 (en) | 2018-10-29 | 2022-02-15 | Vmware, Inc. | Efficiently purging non-active blocks in NVM regions using virtblock arrays |
US10691591B2 (en) | 2018-10-29 | 2020-06-23 | Vmware, Inc. | Efficiently purging non-active blocks in NVM regions using pointer elimination |
KR20200078047A (ko) * | 2018-12-21 | 2020-07-01 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작방법 |
US11294827B2 (en) * | 2019-09-12 | 2022-04-05 | Western Digital Technologies, Inc. | Non-sequential zoned namespaces |
US11442852B2 (en) * | 2020-06-25 | 2022-09-13 | Western Digital Technologies, Inc. | Adaptive context metadata message for optimized two-chip performance |
US20220147392A1 (en) * | 2020-11-10 | 2022-05-12 | Samsung Electronics Co., Ltd. | System architecture providing end-to-end performance isolation for multi-tenant systems |
US11809328B2 (en) | 2021-04-01 | 2023-11-07 | Silicon Motion, Inc. | Control method of flash memory controller and associated flash memory controller and storage device |
JP2023044330A (ja) * | 2021-09-17 | 2023-03-30 | キオクシア株式会社 | メモリシステムおよび制御方法 |
Family Cites Families (45)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4746598B2 (ja) * | 2007-09-28 | 2011-08-10 | 株式会社東芝 | 半導体記憶装置 |
JP2009110053A (ja) * | 2007-10-26 | 2009-05-21 | Toshiba Corp | メモリシステム |
JP4666080B2 (ja) * | 2009-02-09 | 2011-04-06 | Tdk株式会社 | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 |
JP5323199B2 (ja) * | 2009-02-12 | 2013-10-23 | 株式会社東芝 | メモリシステム及びメモリシステムの制御方法 |
US8402242B2 (en) * | 2009-07-29 | 2013-03-19 | International Business Machines Corporation | Write-erase endurance lifetime of memory storage devices |
US8285946B2 (en) * | 2009-12-15 | 2012-10-09 | International Business Machines Corporation | Reducing access contention in flash-based memory systems |
JP2011164994A (ja) * | 2010-02-10 | 2011-08-25 | Toshiba Corp | メモリシステム |
US9158670B1 (en) * | 2011-06-30 | 2015-10-13 | Western Digital Technologies, Inc. | System and method for dynamically adjusting garbage collection policies in solid-state memory |
US20130019057A1 (en) | 2011-07-15 | 2013-01-17 | Violin Memory, Inc. | Flash disk array and controller |
CN103597461B (zh) * | 2011-09-30 | 2016-04-27 | 株式会社日立制作所 | 闪存组件 |
JP2013137665A (ja) * | 2011-12-28 | 2013-07-11 | Toshiba Corp | 半導体記憶装置、半導体記憶装置の制御方法、およびメモリコントローラ |
JP5624578B2 (ja) * | 2012-03-23 | 2014-11-12 | 株式会社東芝 | メモリシステム |
WO2013164869A1 (en) * | 2012-05-02 | 2013-11-07 | Hitachi, Ltd. | Storage system and control method therefor |
KR102147359B1 (ko) * | 2012-06-29 | 2020-08-24 | 삼성전자 주식회사 | 비휘발성 메모리 장치의 관리 방법 및 비휘발성 메모리 장치 |
JP5813589B2 (ja) * | 2012-07-13 | 2015-11-17 | 株式会社東芝 | メモリシステムおよびその制御方法 |
US9734911B2 (en) * | 2012-12-31 | 2017-08-15 | Sandisk Technologies Llc | Method and system for asynchronous die operations in a non-volatile memory |
KR20150105323A (ko) * | 2013-01-08 | 2015-09-16 | 바이올린 메모리 인코포레이티드 | 데이터 스토리지 방법 및 시스템 |
US9489297B2 (en) * | 2013-01-21 | 2016-11-08 | Sandisk Technologies Llc | Pregroomer for storage array |
US9229854B1 (en) * | 2013-01-28 | 2016-01-05 | Radian Memory Systems, LLC | Multi-array operation support and related devices, systems and software |
US9189389B2 (en) * | 2013-03-11 | 2015-11-17 | Kabushiki Kaisha Toshiba | Memory controller and memory system |
US9483397B2 (en) * | 2013-07-16 | 2016-11-01 | Intel Corporation | Erase management in memory systems |
US20160170873A1 (en) * | 2013-07-18 | 2016-06-16 | Hitachi, Ltd. | Information processing device |
JP2015069241A (ja) * | 2013-09-26 | 2015-04-13 | キヤノン株式会社 | 画像処理装置、制御装置、それらの制御方法、及びプログラム |
US9442662B2 (en) * | 2013-10-18 | 2016-09-13 | Sandisk Technologies Llc | Device and method for managing die groups |
US9053002B2 (en) * | 2013-11-12 | 2015-06-09 | International Business Machines Corporation | Thick and thin data volume management |
US9383926B2 (en) * | 2014-05-27 | 2016-07-05 | Kabushiki Kaisha Toshiba | Host-controlled garbage collection |
US9632712B2 (en) * | 2014-07-02 | 2017-04-25 | Sandisk Technologies Llc | System and method of updating metablocks associated with multiple memory dies |
WO2016013076A1 (ja) * | 2014-07-23 | 2016-01-28 | 富士通株式会社 | 情報処理装置、メモリコントローラ、記憶装置の制御プログラム及び記憶装置の制御方法 |
US10146482B2 (en) * | 2014-08-01 | 2018-12-04 | Toshiba Memory Corporation | Global error recovery system |
US9524112B2 (en) * | 2014-09-02 | 2016-12-20 | Sandisk Technologies Llc | Process and apparatus to reduce declared capacity of a storage device by trimming |
US9582201B2 (en) * | 2014-09-26 | 2017-02-28 | Western Digital Technologies, Inc. | Multi-tier scheme for logical storage management |
KR20160051367A (ko) * | 2014-11-03 | 2016-05-11 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 이의 동작 방법 |
KR20160094767A (ko) * | 2015-02-02 | 2016-08-10 | 삼성전자주식회사 | 아이들 구간에서 정보 전달 기능을 수행하는 메모리 장치 및 방법 |
US9696935B2 (en) * | 2015-04-24 | 2017-07-04 | Kabushiki Kaisha Toshiba | Storage device that secures a block for a stream or namespace and system having the storage device |
US9703492B2 (en) * | 2015-05-19 | 2017-07-11 | International Business Machines Corporation | Page replacement algorithms for use with solid-state drives |
JP2017027388A (ja) | 2015-07-23 | 2017-02-02 | 株式会社東芝 | メモリシステムおよび不揮発性メモリの制御方法 |
JP6403162B2 (ja) * | 2015-07-23 | 2018-10-10 | 東芝メモリ株式会社 | メモリシステム |
JP2015222590A (ja) * | 2015-07-24 | 2015-12-10 | 株式会社東芝 | メモリシステム |
US9606915B2 (en) * | 2015-08-11 | 2017-03-28 | Toshiba Corporation | Pool level garbage collection and wear leveling of solid state devices |
JP6414852B2 (ja) * | 2015-12-14 | 2018-10-31 | 東芝メモリ株式会社 | メモリシステムおよび制御方法 |
JP6448571B2 (ja) * | 2016-03-08 | 2019-01-09 | 東芝メモリ株式会社 | ストレージシステム、情報処理システムおよび制御方法 |
JP6444917B2 (ja) * | 2016-03-08 | 2018-12-26 | 東芝メモリ株式会社 | ストレージシステム、情報処理システムおよび制御方法 |
CN106201343A (zh) * | 2016-06-30 | 2016-12-07 | 浪潮(北京)电子信息产业有限公司 | 一种提高物理带库磁带利用率的方法及*** |
JP6524039B2 (ja) * | 2016-09-23 | 2019-06-05 | 東芝メモリ株式会社 | メモリシステム及び制御方法 |
JP6765321B2 (ja) * | 2017-02-28 | 2020-10-07 | キオクシア株式会社 | メモリシステムおよび制御方法 |
-
2017
- 2017-02-28 JP JP2017036930A patent/JP6765321B2/ja active Active
- 2017-07-07 TW TW106122780A patent/TWI640016B/zh active
- 2017-07-07 TW TW107121159A patent/TWI734011B/zh active
- 2017-07-07 TW TW110119528A patent/TWI765725B/zh active
- 2017-08-04 CN CN201710659407.9A patent/CN108509146B/zh active Active
- 2017-08-04 CN CN202110196427.3A patent/CN112732200B/zh active Active
- 2017-09-11 US US15/700,365 patent/US10103158B2/en active Active
-
2018
- 2018-09-10 US US16/126,231 patent/US10418371B2/en not_active Ceased
-
2020
- 2020-11-02 US US17/087,268 patent/USRE49508E1/en active Active
Also Published As
Publication number | Publication date |
---|---|
TW201839760A (zh) | 2018-11-01 |
TW202137204A (zh) | 2021-10-01 |
US10103158B2 (en) | 2018-10-16 |
CN108509146B (zh) | 2021-03-16 |
TWI765725B (zh) | 2022-05-21 |
CN112732200B (zh) | 2024-04-26 |
CN108509146A (zh) | 2018-09-07 |
TWI640016B (zh) | 2018-11-01 |
CN112732200A (zh) | 2021-04-30 |
TW201833910A (zh) | 2018-09-16 |
JP2018142236A (ja) | 2018-09-13 |
TWI734011B (zh) | 2021-07-21 |
US10418371B2 (en) | 2019-09-17 |
US20190006379A1 (en) | 2019-01-03 |
USRE49508E1 (en) | 2023-04-25 |
US20180247947A1 (en) | 2018-08-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6765321B2 (ja) | メモリシステムおよび制御方法 | |
JP6709180B2 (ja) | メモリシステムおよび制御方法 | |
JP6765322B2 (ja) | メモリシステムおよび制御方法 | |
TWI674502B (zh) | 記憶體系統及控制方法 | |
CN108228092B (zh) | 存储***和非易失性存储器的控制方法 | |
KR20170128012A (ko) | 플래시 기반 저장 장치 및 이를 포함하는 컴퓨팅 디바이스 | |
JP7342163B2 (ja) | メモリシステム | |
JP7132291B2 (ja) | メモリシステムおよび制御方法 | |
JP7167295B2 (ja) | メモリシステムおよび制御方法 | |
JP2022179798A (ja) | メモリシステムおよび制御方法 | |
JP2022121655A (ja) | メモリシステムおよび制御方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A712 Effective date: 20170531 |
|
A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A712 Effective date: 20180830 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20190312 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20191125 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20200107 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20200218 |
|
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: 20200818 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20200915 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6765321 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |