# US 2020/0401311 A1 · Memory system for controlling nonvolatile memory

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 2020/0401311 A1
- Document ID: US20200401311A1
- Status: Published application
- Kind: A1
- Application number: 17/010,487
- Filed: 2020-09-02
- Published: 2020-12-24
- Earliest claimed: 2015-07-23
- Assignees: Toshiba Memory Corporation
- Applicants: Toshiba Memory Corporation
- Inventors: Shinichi KANNO
- Web page: https://patentgrep.com/patent/US20200401311A1

## CPC

- G06F 3/0604: {Improving or facilitating administration, e.g. storage management}
- G06F 3/06: Digital input from, or digital output to, record carriers {, e.g. RAID, emulated record carriers or networked record carriers}
- G06F 3/064: {Management of blocks}
- G06F 3/0644: {Management of space entities, e.g. partitions, extents, pools}
- G06F 3/0679: {Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]}
- G06F 12/0246: {in block erasable memory, e.g. flash memory}
- G11C 29/52: Protection of memory contents; Detection of errors in memory contents
- G06F 2212/7202: Allocation control and policies
- G06F 2212/7205: Cleaning, compaction, garbage collection, erase control
- G06F 2212/7211: Wear leveling
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- G11C: STATIC STORES (semiconductor memory devices H10B)

## 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

### Claim 1

(canceled)

### Claim 2

A memory system comprising a host device and an SSD, the SSD comprising a nonvolatile memory including a plurality of physical blocks and a controller electrically connected to the nonvolatile memory, the host device controlling the SSD by issuing commands, wherein
the host device is configured to issue a request command for allocating the plurality of physical blocks as a plurality of namespaces, and
based on the issued request command, the memory system is configured to:
manage the plurality of namespaces, the plurality of namespaces including 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 issued request command includes a first request for the first namespace and a second request for the second namespace, the first request specifying a first number of logical block addresses and a first number of physical blocks, the second request specifying a second number of logical block addresses and a second number of physical blocks;
allocate the first number of physical blocks for the first namespace;
allocate the second number of physical blocks for the second namespace;
allocate a first over-provision area for the first namespace, wherein a remainder which is obtained when a capacity corresponding to the first number of logical block addresses is subtracted from a capacity corresponding to the first number of physical blocks serves as the first over-provision area; and
allocate a second over-provision area for the second namespace, wherein a remainder which is obtained when a capacity corresponding to the second number of logical block addresses is subtracted from a capacity corresponding to the second number of physical blocks serves as the second over-provision area.

### Claim 3 (depends on 2)

The memory system of claim 2, wherein
a ratio of the capacity of the second over-provision area to the capacity corresponding to the second number of logical block addresses is smaller than a ratio of the capacity of the first over-provision area to the capacity corresponding to the first number of logical block addresses.

### Claim 4 (depends on 2)

The memory system of claim 2, wherein
the memory system is configured to:
write data associated with an ID of the first namespace to the first namespace as the first type of data, and
write data associated with an ID of the second namespace to the second namespace as the second type of data.

### Claim 5 (depends on 2)

The memory system of claim 2, wherein
the host device is configured to issue a first namespace management command for requesting creation of the first namespace, and a second namespace management command for requesting creation of the second namespace, the first namespace management command including a parameter specifying the first number of logical block addresses and a parameter specifying the first number of physical blocks, the second namespace management command including a parameter specifying the second number of logical block addresses and a parameter specifying the second number of physical blocks, and
the memory system is configured to:
create the first namespace and allocate the first number of physical blocks for the created first namespace, based on the issued second namespace management command; and
create the second namespace and allocate the second number of physical blocks for the created second namespace, based on the issued first namespace management command.

### Claim 6 (depends on 5)

The memory system of claim 5, wherein
the memory system is configured to:
determine whether allocation of the physical blocks whose number is specified by the parameter in each namespace management command is possible, on the basis of the number of remaining physical blocks of the nonvolatile memory; and
not to perform the allocation of the physical blocks, when allocation of the specified number of physical blocks is not possible.

### Claim 7 (depends on 2)

The memory system of claim 2, wherein
the host device is configured to issue a first write amplification get command for the first namespace, and a second write amplification get command for the second namespace, and
the memory system 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, based on the issued first write amplification get command; and
calculate write amplification of the second namespace by counting an amount of data written to the second namespace by the host device, and an amount of data written to the second namespace by a garbage collection operation of the second namespace, based on the issued second write amplification get command.

### Claim 8 (depends on 2)

The memory system of claim 2, wherein
the host device is configured to issue a control command for requesting starting of garbage collection of a target namespace, and
base on the issued control command, the memory system is configured to:
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.

### Claim 9 (depends on 8)

The memory system of claim 8, wherein
the memory system 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.

### Claim 10 (depends on 2)

The memory system of claim 2, wherein
the memory system is configured to generate first encoded data by encoding write data by using first coding for reducing wear of a memory cell, to generate second encoded data by adding an error correction code to the first encoded data, and to write the second encoded data to one of the namespaces, and
the memory system is further configured to change a ratio between the first encoded data and the error correction code in accordance with the one of the namespaces to which the second encoded data is to be written.

### Claim 11 (depends on 10)

The memory system of claim 10, wherein
the memory system is configured to:
control the ratio between the first encoded data and the error correction code such that second encoded data including first encoded data having a first length and an error correction code having a second length is obtained, when the second encoded data is that which should be written to the first namespace; and
control the ratio between the first encoded data and the error correction code such that second encoded data including first encoded data having a third length less than the first length and an error correction code having a fourth length greater than the second length is obtained, when the second encoded data is that which should be written to the second namespace.

### Claim 12 (depends on 2)

The memory system of claim 2, wherein
the memory system 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.

### Claim 13 (depends on 2)

The memory system of claim 2, wherein
the commands issued by the host device includes at least ones of a write command, a read command, an extended garbage collection control command specifying a namespace to be garbage-collected, or an UNMAP command, in addition to the request command.

### Claim 14 (depends on 2)

The memory system of claim 2, wherein
the request command is a namespace management command for managing creation and deletion of a namespace.

### Claim 15 (depends on 14)

The memory system of claim 14, wherein
the namespace management command including an extended namespace management command specifying both a number of logical block addresses for a namespace to be created and a number of physical blocks to be allocated for the namespace to be created.

### Claim 16

A memory system comprising a host device and an SSD, the SSD comprising a nonvolatile memory including a plurality of physical blocks and a controller electrically connected to the nonvolatile memory, the host device controlling the SSD by issuing commands, wherein
the host device is configured to issue a request command for allocating the plurality of physical blocks as a plurality of namespaces, and
based on the issued request command, the memory system is configured to:
logically divide the nonvolatile memory into a plurality of areas, the plurality of areas being associated with the plurality of namespaces, the plurality of areas including at least a first area for storing a first type of data, and a second area for storing a second type of data having a lower update frequency than the first type of data, the first area and the second area being associated with a first namespace and a second namespace, the issued request command including a first request for the first namespace and a second request for the second namespace, the first request specifying a first number of logical block addresses and a first number of physical blocks, the second request specifying a second number of logical block addresses and a second number of physical blocks;
allocate the first number of physical blocks for the first area;
allocate the second number of physical blocks for the second area;
allocate a first over-provision area for the first area, wherein a remainder which is obtained when a capacity corresponding to the first number of logical block addresses is subtracted from a capacity corresponding to the first number of physical blocks serves as the first over-provision area for the first area;
allocate a second over-provision area for the second area, wherein a remainder which is obtained when a capacity corresponding to the second number of logical block addresses is subtracted from a capacity corresponding to the second number of physical blocks serves as the second over-provision area for the second area;
write data associated with an ID of the first namespace to the first area as the first type of data; and
write data associated with an ID of the second namespace to the second area as the second type of data.

### Claim 17 (depends on 16)

The memory system of claim 16, wherein
the commands issued by the host device includes at least ones of a write command, a read command, an extended garbage collection control command specifying a namespace to be garbage-collected, or an UNMAP command, in addition to the request command.

### Claim 18 (depends on 16)

The memory system of claim 16, wherein
the request command is a namespace management command for managing creation and deletion of a namespace.

### Claim 19 (depends on 18)

The memory system of claim 18, wherein
the namespace management command including an extended namespace management command specifying both a number of logical block addresses for a namespace to be created and a number of physical blocks to be allocated for the namespace to be created.

### Claim 20

A memory system comprising a host device and an SSD, the SSD comprising a nonvolatile memory including a plurality of physical blocks and a controller electrically connected to the nonvolatile memory, the host device controlling the SSD by issuing commands, wherein
the host device is configured to issue a request command for allocating the plurality of physical blocks as a plurality of namespaces, and
based on the issued request command, the memory system is configured to:
manage the plurality of namespaces, the plurality of namespaces including 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 issued request command including a first request for the first namespace and a second request for the second namespace, the first request specifying a first number of logical block addresses and a first number of physical blocks, the second request specifying a second number of logical block addresses and a second number of physical blocks;
allocate the first number of physical blocks for the first namespace, the first namespace including a first over-provision area, wherein a remainder which is obtained when a capacity corresponding to the first number of logical block addresses is subtracted from a capacity corresponding to the first number of physical blocks serves as the first over-provision area; and
allocate the second number of physical blocks for the second namespace, the second namespace including a second over-provision area, wherein a remainder which is obtained when a capacity corresponding to the second number of logical block addresses is subtracted from a capacity corresponding to the second number of physical blocks serves as the second over-provision area.

### Claim 21 (depends on 20)

The memory system of claim 20, wherein
a ratio of the capacity of the second over-provision area to the capacity corresponding to the second number of logical block addresses is smaller than a ratio of the capacity of the first over-provision area to the capacity corresponding to the first number of logical block addresses.
