IP Library Granted Patent US 10,782,879
Granted Patent B2
US 10,782,879 · App. 15/785,860 · Granted Sep 22, 2020

Memory system for controlling nonvolatile memory

Inventor: Shinichi Kanno (Tokyo, JP)
Assignee: Toshiba Memory Corporation
G06F3/0604G06F3/06G06F3/064G06F3/0644G06F3/0679G06F12/0246G11C29/52G06F2212/7202G06F2212/7205G06F2212/7211
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,782,879
App. No.
15/785,860
Granted
Sep 22, 2020
Kind
B2
Abstract

According to one embodiment, a memory system includes a nonvolatile memory including physical blocks, and a controller. The controller manages namespaces. The namespaces include at least a first namespace for storing a first type of data, and a second namespace for storing a second type of data having a lower update frequency than the first type of data. The controller allocates a first number of physical blocks as a physical resource for the first namespace, and allocates a second number of physical blocks as a physical resource for the second namespace, based on a request from a host device specifying an amount of physical resources to be secured for each of the namespaces.

Claims (58)

1. A memory system connectable to a host device, comprising:

a nonvolatile memory including a plurality of physical blocks; and

a controller electrically connected to the nonvolatile memory and configured to manage a plurality of namespaces, the controller being configured to:

receive a first request to create a first namespace from the host device, the first request including a first parameter and a second parameter, the first parameter indicative of a first number of logical addresses, the second parameter indicative of a first number of physical blocks to be allocated for the first namespace or a second number of physical blocks to be allocated for a first over-provision area for the first namespace;

in response to receiving the first request and prior to writing data to the first namespace, allocate a third number of physical blocks, wherein (i) when the second parameter indicates the first number of physical blocks to be allocated for the first namespace, a memory capacity of the first over-provision area for the first namespace is defined as a difference between a memory capacity of the first number of logical addresses and a memory capacity of the first number of physical blocks, and (ii) when the second parameter indicates the second number of physical blocks to be allocated for the first over-provision area for the first namespace, the memory capacity of the first over-provision area is defined as a memory capacity of the second number of physical blocks; and

write data associated with the first namespace to the first namespace after allocating the third number of physical blocks,

wherein the first over-provision area for the first namespace is not visible to the host device as a user accessible logical address space, and

wherein a memory capacity of the third number of physical blocks allocated is greater than the memory capacity of the first number of logical addresses.

2. The memory system according to claim 1 , wherein the controller is configured to write data associated with an ID of the first namespace to the first namespace.

3. The memory system according to claim 1 , wherein the controller is configured to:

receive a second request to create a second namespace from the host device, the second request including a third parameter and a fourth parameter, the third parameter indicative of a second number of logical addresses, the fourth parameter indicative of a fourth number of physical blocks to be allocated for the second namespace or a fifth number of physical blocks to be allocated for a second over-provision area for the second namespace;

in response to receiving the second request and prior to writing data to the second namespace, allocate a sixth number of physical blocks, wherein (i) when the fourth parameter indicates the fourth number of physical blocks to be allocated for the second namespace, a memory capacity of the second over-provision area for the second namespace is defined as a difference between a memory capacity of the second number of logical addresses and a memory capacity of the fourth number of physical blocks, and (ii) when the fourth parameter indicates the fifth number of physical blocks to be allocated for the second over-provision area for the second namespace, the memory capacity of the second over-provision area is defined as a memory capacity of the fifth number of physical blocks; and

write data associated with the second namespace to the second namespace after allocating the sixth number of physical blocks,

wherein the second over-provision area for the second namespace is not visible to the host device as a user accessible logical address space, and

wherein a memory capacity of the sixth number of physical blocks allocated is greater than the memory capacity of the fourth number of logical addresses.

4. The memory system according to claim 3 , wherein the controller is configured to:

determine whether or not allocation of the physical blocks whose number is specified by each request is possible, on the basis of the number of remaining physical blocks of the nonvolatile memory; and

notify, when the allocation of the physical blocks whose number is specified by each request is not possible, the host device of an error response.

5. The memory system according to claim 1 , wherein the controller is configured to:

calculate write amplification of the first namespace by counting an amount of data written to the first namespace by the host device, and an amount of data written to the first namespace by a garbage collection operation of the first namespace; and provide the write amplification corresponding to the first namespace to the host device.

6. The memory system according to claim 1 , wherein the controller is configured to:

receive a control command requesting starting of garbage collection of a target namespace from the host device;

select target physical blocks, which are to be garbage-collected, from physical blocks for the target namespace; and

execute a garbage collection operation of copying valid data from the target physical blocks to a copy destination free block.

7. The memory system of according to claim 6 , wherein the controller is configured to:

manage free blocks created by the garbage collection operation executed for each of the namespaces as shared free blocks of the plurality of namespaces;

select a free block having a least number of program/erase cycles from the shared free blocks; and

allocate the selected free block as the copy destination free block for the target namespace.

8. The memory system of according to claim 1 , wherein

the controller is configured to execute a striping operation for distributing data across a plurality of storage devices each including the nonvolatile memory, and

each of the plurality of namespaces is arranged to extend over the plurality of storage devices.

9. A method of controlling a nonvolatile memory including a plurality of physical blocks, the method comprising:

managing a plurality of namespaces;

receiving a first request to create a first namespace from a host device, the first request including a first parameter and a second parameter, the first parameter indicative of a first number of logical addresses, the second parameter indicative of a first number of physical blocks to be allocated for the first namespace or a second number of physical blocks to be allocated for a first over-provision area for the first namespace;

in response to receiving the first request and prior to writing data to the first namespace, allocating a third number of physical blocks, wherein (i) when the second parameter indicates the first number of physical blocks to be allocated for the first namespace, a memory capacity of the first over-provision area for the first namespace is defined as a difference between a memory capacity of the first number of logical addresses and a memory capacity of the first number of physical blocks, and (ii) when the second parameter indicates the second number of physical blocks to be allocated for the first over-provision area for the first namespace, the memory capacity of the first over-provision area is defined as a memory capacity of the second number of physical blocks; and

writing data associated with the first namespace to the first namespace after allocating the third number of physical blocks,

wherein the first over-provision area for the first namespace is not visible to the host device as a user accessible logical address space, and

wherein a memory capacity of the third number of physical blocks allocated is greater than the memory capacity of the first number of logical addresses.

10. The method according to claim 9 , further comprising writing data associated with an ID of the first namespace to the first namespace.

11. The method according to claim 9 , further comprising:

receiving a second request to create a second namespace from the host device, the second request including a third parameter and a fourth parameter, the third parameter indicative of a second number of logical addresses, the fourth parameter indicative of a fourth number of physical blocks to be allocated for the second namespace or a fifth number of physical blocks to be allocated for a second over-provision area for the second namespace;

in response to receiving the second request and prior to writing data to the second namespace, allocating a sixth number of physical blocks, wherein (i) when the fourth parameter indicates the fourth number of physical blocks to be allocated for the second namespace, a memory capacity of the second over-provision area for the second namespace is defined as a difference between a memory capacity of the second number of logical addresses and a memory capacity of the fourth number of physical blocks, and (ii) when the fourth parameter indicates the fifth number of physical blocks to be allocated for the second over-provision area for the second namespace, the memory capacity of the second over-provision area is defined as a memory capacity of the fifth number of physical blocks; and

writing data associated with the second namespace to the second namespace after allocating the sixth number of physical blocks,

wherein the second over-provision area for the second namespace is not visible to the host device as a user accessible logical address space, and

wherein a memory capacity of the sixth number of physical blocks allocated is greater than the memory capacity of the fourth number of logical addresses.

12. The method according to claim 11 , further comprising:

determining whether or not allocation of the physical blocks whose number is specified by each request is possible, on the basis of the number of remaining physical blocks of the nonvolatile memory; and

notifying, when the allocation of the physical blocks whose number is specified by each request is not possible, the host device of an error response.

13. The method according to claim 9 , further comprising:

receiving a control command requesting starting of garbage collection of a target namespace from the host device;

selecting target physical blocks, which are to be garbage-collected, from physical blocks for the target namespace; and

executing a garbage collection operation of copying valid data from the target physical blocks to a copy destination free block.

14. The method according to claim 13 , further comprising:

managing free blocks created by the garbage collection operation executed for each of the namespaces as shared free blocks of the plurality of namespaces;

selecting a free block having a least number of program/erase cycles from the shared free blocks; and

allocating the selected free block as the copy destination free block for the target namespace.

15. The method according to claim 9 , further comprising executing a striping operation for distributing data across a plurality of storage devices each including the nonvolatile memory, wherein

each of the plurality of namespaces is arranged to extend over the plurality of storage devices.

Assignments (3)
MERGER Recorded Jan 22, 2021
From: TOSHIBA MEMORY CORPORATION
To: K.K. PANGEA
Reel/Frame 055659/0471 →
CHANGE OF NAME AND ADDRESS Recorded Jan 22, 2021
From: TOSHIBA MEMORY CORPORATION
To: KIOXIA CORPORATION
Reel/Frame 055669/0001 →
CHANGE OF NAME AND ADDRESS Recorded Jan 22, 2021
From: K.K. PANGEA
To: TOSHIBA MEMORY CORPORATION
Reel/Frame 055669/0401 →
Priority Claims (1)
JP 2015-145712 · Jul 23, 2015 · national
Continuity (2)
Continuation 14949078 · Nov 23, 2015
Related Publication 20180039417A1 · Feb 8, 2018
Cited By (1)
US 12,561,083