USRE49508EActiveUtility

Memory system and method for controlling nonvolatile memory

Assignee: KIOXIA CORPPriority: Feb 28, 2017Filed: Nov 2, 2020Granted: Apr 25, 2023
Est. expiryFeb 28, 2037(~10.6 yrs left)· nominal 20-yr term from priority
Inventors:Shinichi Kanno
H10B 41/35G06F 3/0679G06F 12/0246G06F 2212/214G06F 3/0644G06F 3/0688G06F 3/0656G06F 3/0652G06F 3/065G11C 16/16G06F 2212/1016G06F 2212/7202G06F 3/0659G06F 3/0631G06F 12/0253G06F 3/0608G06F 12/06G06F 3/0611G06F 3/0658G06F 12/1009G06F 3/064G06F 3/0604H01L 27/11524H01L 27/1052
72
PatentIndex Score
0
Cited by
25
References
40
Claims

Abstract

According to one embodiment, a memory system classifies a plurality of nonvolatile memory dies connected to a plurality of channels, into a plurality of die groups such that each of the plurality of nonvolatile memory dies belongs to only one die group. The memory system performs a data write/read operation for one die group of the plurality of die groups in accordance with an I/O command from a host designating one of a plurality of regions including at least one region corresponding to each die group. The memory system manages a group of free blocks in the nonvolatile memory for each of the plurality of die group by using a plurality of free block pools corresponding to the plurality of die groups.

Claims

exact text as granted — not AI-modified
What is claimed is: 
     
       1. A memory system connectable to a host, the memory system comprising:
 a nonvolatile memory including a plurality of nonvolatile memory dies connected to a plurality of channels, each of the nonvolatile memory dies including a plurality of blocks; and 
 a controller configured to control the nonvolatile memory via the plurality of channels, wherein 
 the controller is configured to:
 classify the plurality of nonvolatile memory dies into a first die group including a plurality of first nonvolatile memory dies and a second die group including a plurality of second nonvolatile memory dies different from the first nonvolatile memory dies; 
 in response to receiving, from the host, a first write command designating a first region corresponding to the first die group, write first data to be written to the first region to a first write destination block which is selected from one of the first nonvolatile memory dies; and 
 in response to receiving, from the host, a second write command designating a second region corresponding to the second die group, write second data to be written to the second region to a second write destination block which is selected from one of the second nonvolatile memory dies, 
 
 a group of free blocks belonging to the first die group is managed by a first free block pool corresponding to the first die group, 
 a group of free blocks belonging to the second die group is managed by a second free block pool corresponding to the second die group, 
 the first write destination block is allocated from the first free block pool, 
 the second write destination block is allocated from the second free block pool, 
 the first free block pool is a free block pool dedicated to a first data block pool managing each of blocks which belongs to the first die group and which holds valid data, and 
 the second free block pool is a shared free block pool shared by a plurality of second data block pools managing respective blocks which belong to the second die group and which hold valid data. 
 
     
     
       2. The memory system of  claim 1 , wherein
 the controller is further configured to: 
 in response to receiving, from the host, a first read command designating the first region while a write operation for the second data is being executed, read data from the first die group without waiting for completion of the write operation for the second data. 
 
     
     
       3. The memory system of  claim 1 , wherein
 a group of free blocks belonging to the first die group is managed by a first free block pool corresponding to the first die group, and a group of free blocks belonging to the second die group is managed by a second free block pool corresponding to the second die group,   the first write destination block is allocated from the first free block pool, and the second write destination block is allocated from the second free block pool, and   the first free block pool is a free block pool dedicated to a first data block pool managing each of blocks which belongs to the first die group and which holds valid data, and the second free block pool is a shared free block pool shared by a plurality of second data block pools managing respective blocks which belong to the second die group and which hold valid data.   
     
     
       4. The memory system of claim  3  1, wherein
 the controller is further configured to: 
 in garbage collection on the first data block pool, allocate one of the free blocks in the first free block pool as a first copy destination block,
 copy, to the first copy destination block, only valid data from one or more blocks in the first data block pool, and 
 return, to the first free block pool, the one or more blocks which include only invalid data as a result of copying of the valid data to the first copy destination block; and 
 
 in garbage collection on the second data block pool which is one of the plurality of second data block pools, 
 allocate one of the free blocks in the second free block pool shared by the plurality of second data block pools, as a second copy destination block, 
 copy, to the second copy destination block, only valid data from one or more blocks in the one second data block pool, and 
 return, to the second free block pool, the one or more blocks which include only invalid data as a result of copying of the valid data to the second copy destination block. 
 
     
     
       5. The memory system of  claim 1 , wherein
 a group of free blocks belonging to the first die group is managed by a first free block pool corresponding to the first die group, and a group of free blocks belonging to the second die group is managed by a second free block pool corresponding to the second die group,   the first write destination block is allocated from the first free block pool, and the second write destination block is allocated from the second free block pool, and   the first free block pool is a free block pool dedicated to a first data block pool managing each of blocks which belongs to the first die group and which holds valid data, and the second free block pool is a free block pool dedicated to a second data block pool managing each of blocks which belongs to the second die group and which holds valid data.   
     
     
       6. The memory system of  claim 5 , wherein
 the controller is further configured to:   in garbage collection on the first data block pool,   allocate one of the free blocks in the first free block pool as a first copy destination block,   copy, to the first copy destination block, only valid data from one or more blocks in the first data block pool, and   return, to the first free block pool, the one or more blocks which include only invalid data as a result of copying of the valid data to the first copy destination block; and   in garbage collection on the second data block pool,   allocate one of the free blocks in the second free block pool as a second copy destination block,   copy, to the second copy destination block, only valid data from one or more blocks in the second data block pool, and   return, to the second free block pool, the one or more blocks which include only invalid data as a result of copying of the valid data to the second copy destination block.   
     
     
       7. The memory system of  claim 1 , wherein
 a group of free blocks belonging to the first die group is managed by a first free block pool corresponding to the first die group, and a group of free blocks belonging to the second die group is managed by a second free block pool corresponding to the second die group,   the first write destination block is allocated from the first free block pool, and the second write destination block is allocated from the second free block pool, and   the first free block pool is a shared free block pool shared by a plurality of first data block pools managing respective blocks which belong to the first die group and which hold valid data, and the second free block pool is a shared free block pool shared by a plurality of second data block pools managing respective blocks which belong to the second die group and which hold valid data.   
     
     
       8. The memory system of  claim 7 , wherein
 the controller is further configured to:   in garbage collection on one first data block pool of the plurality of first data block pools,   allocate, as a first copy destination block, one of the free blocks in the first free block pool shared by the plurality of first data block pools,   copy, to the first copy destination block, only valid data from one or more blocks in the one first data block pool, and   return, to the first free block pool, the one or more blocks which include only invalid data as a result of copying of the valid data to the first copy destination block; and   in garbage collection on one second data block pool of the plurality of second data block pools,   allocate, as a second copy destination block, one of the free blocks in the second free block pool shared by the plurality of second data block pools,   copy, to the second copy destination block, only valid data from one or more blocks in the one second data block pool, and   return, to the second free block pool, the one or more blocks which include only invalid data as a result of copying of the valid data to the second copy destination block.   
     
     
       9. The memory system of  claim 1 , wherein
 the first nonvolatile memory dies included in the first die group are a set of nonvolatile memory dies connected to the respective channels, and the second nonvolatile memory dies included in the second die group are a set of other nonvolatile memory dies connected to the respective channels. 
 
     
     
       10. The memory system of  claim 1 , wherein
 the first nonvolatile memory dies included in the first die group are a set of nonvolatile memory dies each connected to a first channel of the plurality of channels, and the second nonvolatile memory dies included in the second die group are a set of nonvolatile memory dies each connected to a second channel of the plurality of channels. 
 
     
     
       11. A method of controlling a nonvolatile memory including a plurality of nonvolatile memory dies connected to a plurality of channels, each of the nonvolatile memory dies including a plurality of blocks, the method comprising:
 classifying the plurality of nonvolatile memory dies into a first die group including a plurality of first nonvolatile memory dies and a second die group including a plurality of second nonvolatile memory dies different from the first nonvolatile memory dies; 
 in response to receiving, from a host, a first write command designating a first region corresponding to the first die group, writing first data to be written to the first region to a first write destination block which is selected from one of the first nonvolatile memory dies; and 
 in response to receiving, from the host, a second write command designating a second region corresponding to the second die group, writing second data to be written to the second region to a second write destination block which is selected from one of the second nonvolatile memory dies, wherein 
 a group of free blocks belonging to the first die group is managed by a first free block pool corresponding to the first die group, 
 a group of free blocks belonging to the second die group is managed by a second free block pool corresponding to the second die group, 
 the first write destination block is allocated from the first free block pool, 
 the second write destination block is allocated from the second free block pool, 
 the first free block pool is a free block pool dedicated to a first data block pool managing each of blocks which belongs to the first die group and which holds valid data, and 
 the second free block pool is a shared free block pool shared by a plurality of second data block pools managing respective blocks which belong to the second die group and which hold valid data. 
 
     
     
       12. The method of  claim 11 , further comprising:
 in response to receiving, from the host, a first read command designating the first region while a write operation for the second data is being executed, reading data from the first die group without waiting for completion of the write operation for the second data. 
 
     
     
       13. The method of  claim 11 , wherein
 a group of free blocks belonging to the first die group is managed by a first free block pool corresponding to the first die group, and a group of free blocks belonging to the second die group is managed by a second free block pool corresponding to the second die group,   the first write destination block is allocated from the first free block pool, and the second write destination block is allocated from the second free block pool, and   the first free block pool is a free block pool dedicated to a first data block pool managing each of blocks which belongs to the first die group and which holds valid data, and the second free block pool is a shared free block pool shared by a plurality of second data block pools managing respective blocks which belong to the second die group and which hold valid data.   
     
     
       14. The method of claim  13  11, further comprising:
 in garbage collection on one first data block pool of the plurality of first data block pools, allocating one of the free blocks in the first free block pool as a first copy destination block shared by the plurality of first data block pools,
 copying, to the first copy destination block, only valid data from one or more blocks in the one first data block pool, and 
 returning, to the first free block pool, the one or more blocks which include only invalid data as a result of copying of the valid data to the first copy destination block; and 
 
 in garbage collection on the one second data block pool which is one of the plurality of second data block pools,
 allocating one of the free blocks in the second free block pool shared by the plurality of second data block pools, as a second copy destination block, 
 copying, to the second copy destination block, only valid data from one or more blocks in the one second data block pool, and 
 returning, to the second free block pool, the one or more blocks which include only invalid data as a result of copying of the valid data to the second copy destination block. 
 
 
     
     
       15. The method of  claim 11 , wherein
 the first nonvolatile memory dies included in the first die group are a set of nonvolatile memory dies connected to the respective channels, and the second nonvolatile memory dies included in the second die group are a set of other nonvolatile memory dies connected to the respective channels. 
 
     
     
       16. The method of  claim 11 , wherein
 the first nonvolatile memory dies included in the first die group are a set of nonvolatile memory dies each connected to a first channel of the plurality of channels, and the second nonvolatile memory dies included in the second die group are a set of nonvolatile memory dies each connected to a second channel of the plurality of channels. 
 
     
     
       17. A memory system connectable to a host, the memory system comprising:
 a nonvolatile memory including a plurality of nonvolatile memory dies connected to a plurality of channels, each of the plurality of nonvolatile memory dies including a plurality of blocks; and   a controller configured to control the nonvolatile memory via the plurality of channels, wherein   the controller is configured to:
 classify the plurality of nonvolatile memory dies into a first die group and a second die group such that each of the plurality of nonvolatile memory dies belongs to only one die group; 
 in response to receiving, from the host, a first write command designating a first region corresponding to the first die group, write first data to be written to the first region to a first write destination block which is selected from the first die group; and 
 in response to receiving, from the host, a second write command designating a second region corresponding to the second die group, write second data to be written to the second region to a second write destination block which is selected from the second die group, 
   free blocks belonging to the first die group are managed by a first free block pool corresponding to the first die group,   free blocks belonging to the second die group are managed by a second free block pool corresponding to the second die group,   the first write destination block is allocated from the first free block pool,   the second write destination block is allocated from the second free block pool,   the first free block pool is a free block pool dedicated to a first data block pool, the first data block pool managing each of blocks which belongs to the first die group and which stores valid data, and   the second free block pool is a shared free block pool shared by a plurality of second data block pools, the plurality of second data block pools managing respective blocks which belong to the second die group and which store valid data.    
     
     
       18. The memory system of claim 17, wherein
 the controller is further configured to:   in response to receiving, from the host, a first read command designating the first region while a write operation for the second data is being executed, read data from the first die group without waiting for completion of the write operation for the second data.    
     
     
       19. The memory system of claim 17, wherein
 the controller is further configured to:   in a garbage collection operation on the first data block pool,
 allocate one of the free blocks in the first free block pool as a first copy destination block, 
 copy, to the first copy destination block, only valid data from one or more blocks in the first data block pool, and 
 return, to the first free block pool, the one or more blocks which include only invalid data as a result of copying of the valid data to the first copy destination block; and 
   in a garbage collection operation on one of the plurality of second data block pools,
 allocate one of the free blocks in the second free block pool, as a second copy destination block, 
 copy, to the second copy destination block, only valid data from one or more blocks in the one of the plurality of second data block pools, and 
 return, to the second free block pool, the one or more blocks which include only invalid data as a result of copying of the valid data to the second copy destination block.  
   
     
     
       20. The memory system of claim 17, wherein
 the first die group includes a plurality of first nonvolatile memory dies respectively connected to the plurality of channels, and   the second die group includes a plurality of second nonvolatile memory dies respectively connected to the plurality of channels.    
     
     
       21. The memory system of claim 17, wherein
 the first die group includes a plurality of first nonvolatile memory dies each connected to a first channel of the plurality of channels, and   the second die group includes a plurality of second nonvolatile memory dies each connected to a second channel of the plurality of channels.    
     
     
       22. A memory system connectable to a host, the memory system comprising:
 a nonvolatile memory including a plurality of nonvolatile memory dies connected to a plurality of channels, each of the plurality of nonvolatile memory dies including a plurality of blocks; and   a controller configured to control the nonvolatile memory via the plurality of channels, wherein   the controller is configured to:   classify the plurality of nonvolatile memory dies into a first die group and a second die group such that each of the plurality of nonvolatile memory dies belongs to only one die group; and   in response to receiving, from the host, a copy command designating the first die group as a copy source and designating the second die group as a copy destination,
 (1) read valid data from a first block which is selected from the first die group; and 
 (2) write the read valid data to a second block which is selected from the second die group.  
   
     
     
       23. The memory system of claim 22, wherein
 the controller is further configured to:   (3) return the first block to a free block pool belonging to the first die group when valid data no longer exist in the first block.    
     
     
       24. The memory system of claim 23, wherein
 the controller is further configured to:   repeat operations of (1) to (3) until a block storing valid data no longer exists in the first die group.    
     
     
       25. The memory system of claim 22, wherein
 the controller is further configured to:   in response to receiving, from the host, a write command designating a first region corresponding to the first die group while performing an operation for the copy command, write first write data to be written to the first region to a write destination block which is selected from the second die group.    
     
     
       26. The memory system of claim 22, wherein
 the controller is configured to cause the first die group and the second die group to simultaneously execute I/O commands.    
     
     
       27. The memory system of claim 22, wherein
 the first die group includes a plurality of first nonvolatile memory dies respectively connected to the plurality of channels, and   the second die group includes a plurality of second nonvolatile memory dies respectively connected to the plurality of channels.    
     
     
       28. The memory system of claim 22, wherein
 the first die group includes a plurality of first nonvolatile memory dies each connected to a first channel of the plurality of channels, and   the second die group includes a plurality of second nonvolatile memory dies each connected to a second channel of the plurality of channels.    
     
     
       29. A memory system connectable to a host, the memory system comprising:
 a nonvolatile memory including a plurality of nonvolatile memory dies connected to a plurality of channels, each of the plurality of nonvolatile memory dies including a plurality of blocks; and   a controller configured to control the nonvolatile memory via the plurality of channels, wherein   the controller is configured to:
 classify the plurality of nonvolatile memory dies into a first die group and a second die group such that each of the plurality of nonvolatile memory dies belongs to only one die group; 
 in response to receiving, from the host, a first write command designating a first region corresponding to the first die group, write first data to be written to the first region to a first write destination block which is selected from the first die group; and 
 in response to receiving, from the host, a second write command designating a second region corresponding to the second die group, write second data to be written to the second region to a second write destination block which is selected from the second die group, wherein 
   free blocks belonging to the first die group are managed by a first free block pool corresponding to the first die group,   free blocks belonging to the second die group are managed by a second free block pool corresponding to the second die group,   the first write destination block is allocated from the first free block pool,   the second write destination block is allocated from the second free block pool,   the first free block pool is a shared free block pool shared by a plurality of first data block pools, the plurality of first data block pools managing respective blocks which belong to the first die group and which store valid data, and   the second free block pool is a shared free block pool shared by a plurality of second data block pools, the plurality of second data block pools managing respective blocks which belong to the second die group and which store valid data.    
     
     
       30. The memory system of claim 29, wherein
 the controller is further configured to:   in response to receiving, from the host, a first read command designating the first region while a write operation for the second data is being executed, read data from the first die group without waiting for completion of the write operation for the second data.    
     
     
       31. The memory system of claim 29, wherein
 the controller is further configured to:   in a garbage collection operation on one of the plurality of first data block pools,
 allocate, as a first copy destination block, one of the free blocks in the first free block pool, 
 copy, to the first copy destination block, only valid data from one or more blocks in the one of the plurality of first data block pools, and 
 return, to the first free block pool, the one or more blocks which include only invalid data as a result of copying of the valid data to the first copy destination block; and 
   in a garbage collection operation on one of the plurality of second data block pools,
 allocate, as a second copy destination block, one of the free blocks in the second free block pool, 
 copy, to the second copy destination block, only valid data from one or more blocks in the one of the plurality of second data block pools, and 
 return, to the second free block pool, the one or more blocks which include only invalid data as a result of copying of the valid data to the second copy destination block.  
   
     
     
       32. The memory system of claim 29, wherein
 the first die group includes a plurality of first nonvolatile memory dies respectively connected to the plurality of channels, and   the second die group includes a plurality of second nonvolatile memory dies respectively connected to the plurality of channels.    
     
     
       33. The memory system of claim 29, wherein
 the first die group includes a plurality of first nonvolatile memory dies each connected to a first channel of the plurality of channels, and   the second die group includes a plurality of second nonvolatile memory dies each connected to a second channel of the plurality of channels.    
     
     
       34. A method of controlling a nonvolatile memory, the nonvolatile memory including a plurality of nonvolatile memory dies connected to a plurality of channels, each of the plurality of nonvolatile memory dies including a plurality of blocks, said method comprising:
 classifying the plurality of nonvolatile memory dies into a first die group and a second die group such that each of the plurality of nonvolatile memory dies belongs to only one die group; and   in response to receiving, from a host, a copy command designating the first die group as a copy source and designating the second die group as a copy destination,
 (1) reading valid data from a first block which is selected from the first die group; and 
 (2) writing the read valid data to a second block which is selected from the second die group.  
   
     
     
       35. The method of claim 34, further comprising:
 (3) returning the first block to a free block pool belonging to the first die group when valid data no longer exist in the first block.    
     
     
       36. The method of claim 35, further comprising:
 repeating operations of (1) to (3) until a block storing valid data no longer exists in the first die group.    
     
     
       37. The method of claim 34, further comprising:
 in response to receiving, from the host, a write command designating a first region corresponding to the first die group while performing an operation for the copy command, writing first write data to be written to the first region to a write destination block which is selected from the second die group.    
     
     
       38. The method of  claim 34 , further comprising:
 causing the first die group and the second die group to simultaneously execute I/O commands. 
 
     
     
       39. The method of claim 34, wherein
 the first die group includes a plurality of first nonvolatile memory dies respectively connected to the plurality of channels, and   the second die group includes a plurality of second nonvolatile memory dies respectively connected to the plurality of channels.    
     
     
       40. The method of claim 34, wherein
 the first die group includes a plurality of first nonvolatile memory dies each connected to a first channel of the plurality of channels, and   the second die group includes a plurality of second nonvolatile memory dies each connected to a second channel of the plurality of channels.

Join the waitlist — get patent alerts

Track USRE49508E — get alerts on status changes and closely related new filings.

We store only your email — no account needed. See our privacy policy.