# US 12,223,177 B2 · Memory system and control method

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

- Number: US 12,223,177 B2
- Document ID: US12223177B2
- Status: Granted
- Kind: B2
- Application number: 18/182,546
- Filed: 2023-03-13
- Published: 2024-03-07
- Granted: 2025-02-11
- Earliest claimed: 2022-09-05
- Assignees: Kioxia Corporation
- Applicants: Kioxia Corporation
- Inventors: Tatsuya Sasaki
- Web page: https://patentgrep.com/patent/US12223177B2

## CPC

- G06F 3/0617: {in relation to availability}
- G06F 3/0607: {by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device}
- G06F 3/0644: {Management of space entities, e.g. partitions, extents, pools}
- G06F 3/0661: {Format or protocol conversion arrangements}
- G06F 3/0664: {at device level, e.g. emulation of a storage device or system}
- G06F 3/0679: {Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

According to one embodiment, a controller creates a virtual controller based on an attached state of the namespace with respect to the storage area of the nonvolatile memory based on reception of a first command requesting connection from a first host. The controller executes processing related to an operation of the namespace requested by a second command related to the operation of the namespace based on an attached state of the namespace in the virtual controller when the second command is received from the first host.

## Claims

### Claim 1

A memory system comprising:
a nonvolatile memory including a storage area; and
a controller capable of communicating with a plurality of hosts including a first host and a second host via a network and capable of creating a namespace by logically dividing the storage area of the nonvolatile memory,
wherein the controller is configured to
create a virtual controller based on an attached state of the namespace with respect to the storage area of the nonvolatile memory based on reception of a first command requesting connection from the first host, the virtual controller being configured to enable a request for an operation including creation, deletion, attachment, or detachment of the namespace to be received from the first host via the network and configured to enable the first host to independently attach or detach the namespace regardless of attachment or detachment of the namespace by the second host,
execute processing related to an operation of the namespace requested by a second command related to the operation of the namespace based on an attached state of the namespace in the virtual controller when the second command is received from the first host,
create a first virtual controller for the first host when the first command is received from the first host,
create a second virtual controller for the second host when the first command is received from the second host,
attach or detach the namespace designated by the second command in the first virtual controller when the second command requesting attachment or detachment as the operation of the namespace is received from the first host,
attach or detach the namespace designated by the second command in the second virtual controller when the second command requesting attachment or detachment as the operation of the namespace is received from the second host,
manage a correspondence between a first identifier of the namespace created in the nonvolatile memory and a second identifier of the namespace in a state of being attached to the first virtual controller, and manage a correspondence between the first identifier and a third identifier of the namespace in a state of being attached to the second virtual controller,
convert the second identifier into the first identifier, and execute a processing relating to access requested by a third command with respect to the namespace indicated by the first identifier when the third command is received from the first host, the third command being a command in which the namespace is designated by the second identifier and requesting the access to the namespace, and
convert the third identifier into the first identifier, and execute a processing related to the access requested by a fourth command with respect to the namespace indicated by the first identifier when the fourth command is received from the second host, the fourth command being a command in which the namespace is designated by the third identifier and requesting the access to the namespace.

### Claim 2 (depends on 1)

The memory system of claim 1, wherein the controller is further configured to:
create a first namespace in the nonvolatile memory and attach the first namespace to the first virtual controller when the second command requesting attachment as the operation of the first namespace is received from the first host in a state where the first namespace is attached none of virtual controllers including the first virtual controller; and
omit the creation of the first namespace in the nonvolatile memory and attach the first namespace to the first virtual controller when the second command requesting the attachment as the operation of the first namespace is received from the first host in a state where the first namespace is attached to a virtual controller other than the first virtual controller.

### Claim 3 (depends on 1)

The memory system of claim 1, wherein the controller is further configured to:
shift a second namespace from a state of being created in the nonvolatile memory to a released state, and shift the second namespace from a state of being attached to the first virtual controller to a detached state when the second command requesting detachment as the operation of the second namespace is received from the first host in a state where the second namespace is attached to the first virtual controller and is not attached to any virtual controller other than the first virtual controller; and
omit the shifting of the second namespace from the state of being created in the nonvolatile memory to the released state, and shift the second namespace from the state of being attached to the first virtual controller to the detached state when the second command requesting the detachment as the operation of the second namespace is received from the first host in a state where the second namespace is attached to the first virtual controller and any virtual controller other than the first virtual controller.

### Claim 4 (depends on 1)

The memory system of claim 1, wherein the controller is further configured to:
delete a third namespace from the nonvolatile memory when the second command requesting deletion as the operation of the third namespace is received from the first host in a state where the third namespace is not attached to any virtual controller other than the first virtual controller; and
transmit an error response to the first host when the second command requesting the deletion as the operation of the third namespace is received from the first host in a state where the third namespace is attached to any virtual controller other than the first virtual controller.

### Claim 5 (depends on 4)

The memory system of claim 4, wherein the controller is configured to:
shift the third namespace from a state of being attached to the first virtual controller to a detached state, and delete the third namespace from the nonvolatile memory in a case where the third namespace has been attached to the first virtual controller when the second command requesting deletion of the third namespace is received from the first host in the state where the third namespace is not attached to any virtual controller other than the first virtual controller.

### Claim 6 (depends on 4)

The memory system of claim 4, wherein the controller is further configured to transmit the error response to the first host in a case where the third namespace has been attached to the first virtual controller when the second command requesting the deletion as the operation of the third namespace is received from the first host in the state where the third namespace is not attached to any virtual controller other than the first virtual controller.

### Claim 7 (depends on 1)

The memory system of claim 1, wherein the controller is further configured to create a namespace identified by the second command in the storage area of the nonvolatile memory when the second command requesting creation as the operation of the namespace is received from the first host.

### Claim 8 (depends on 1)

The memory system of claim 1, wherein the controller is further configured to:
manage a first table that stores correspondences between identifiers of the namespace created in the storage area of the nonvolatile memory and identifiers of the namespace in a state of being attached to the virtual controller, the correspondences including the correspondence between the first identifier and the second identifier and the correspondence between the first identifier and the third identifier; and
transmit the first table to the first host when a fifth command requesting the first table is received from the first host.

### Claim 9 (depends on 1)

The memory system of claim 1, wherein the controller is further configured to:
manage a first table that stores correspondences between identifiers of the namespace created in the storage area of the nonvolatile memory and identifiers of the namespace in a state of being attached to the virtual controller, the correspondences including the correspondence between the first identifier and the second identifier and the correspondence between the first identifier and the third identifier; and
store the first table into the nonvolatile memory when a sixth command requesting storage of the first table into the nonvolatile memory is received from the first host.

### Claim 10

A control method for a memory system comprising a nonvolatile memory that includes a storage area and capable of communicating with a plurality of hosts including a first host and a second host via a network and capable of creating a namespace by logically dividing the storage area, the control method comprising:
creating a virtual controller based on an attached state of the namespace with respect to the storage area of the nonvolatile memory based on reception of a first command requesting connection from the first host, the virtual controller being configured to enable a request for an operation including creation, deletion, attachment, or detachment of the namespace to be received from the first host via the network and configured to enable the first host to independently attach or detach the namespace regardless of attachment or detachment of the namespace by the second host;
executing processing related to an operation of the namespace requested by a second command related to the operation of the namespace based on an attached state of the namespace in the virtual controller when the second command is received from the first host;
creating a first virtual controller for the first host when the first command is received from the first host;
creating a second virtual controller for the second host when the first command is received from the second host;
attaching or detaching the namespace designated by the second command in the first virtual controller when the second command requesting attachment or detachment as the operation of the namespace is received from the first host;
attaching or detaching the namespace designated by the second command in the second virtual controller when the second command requesting attachment or detachment as the operation of the namespace is received from the second host;
managing a correspondence between a first identifier of the namespace created in the nonvolatile memory and a second identifier of the namespace in a state of being attached to the first virtual controller, and managing a correspondence between the first identifier and a third identifier of the namespace in a state of being attached to the second virtual controller;
converting the second identifier into the first identifier, and executing a processing relating to access requested by a third command with respect to the namespace indicated by the first identifier when the third command is received from the first host, the third command being a command in which the namespace is designated by the second identifier and requesting the access to the namespace; and
converting the third identifier into the first identifier, and executing a processing related to the access requested by a fourth command with respect to the namespace indicated by the first identifier when the fourth command is received from the second host, the fourth command being a command in which the namespace is designated by the third identifier and requesting the access to the namespace.

### Claim 11 (depends on 10)

The control method of claim 10, further comprising:
creating a first namespace in the nonvolatile memory and attaching the first namespace to the first virtual controller when the second command requesting attachment as the operation of the first namespace is received from the first host in a state where the first namespace is attached none of virtual controllers including the first virtual controller; and
omitting the creation of the first namespace in the nonvolatile memory and attaching the first namespace to the first virtual controller when the second command requesting the attachment as the operation of the first namespace is received from the first host in a state where the first namespace is attached to a virtual controller other than the first virtual controller.

### Claim 12 (depends on 10)

The control method of claim 10, further comprising:
shifting a second namespace from a state of being created in the nonvolatile memory to a released state, and shifting the second namespace from a state of being attached to the first virtual controller to a detached state when the second command requesting detachment as the operation of the second namespace is received from the first host in a state where the second namespace is attached to the first virtual controller and is not attached to any virtual controller other than the first virtual controller; and
omitting the shifting of the second namespace from the state of being created in the nonvolatile memory to the released state, and shifting the second namespace from the state of being attached to the first virtual controller to the detached state when the second command requesting the detachment as the operation of the second namespace is received from the first host in a state where the second namespace is attached to the first virtual controller and any virtual controller other than the first virtual controller.

### Claim 13 (depends on 10)

The control method of claim 10, further comprising:
deleting a third namespace from the nonvolatile memory when the second command requesting deletion as the operation of the third namespace is received from the first host in a state where the third namespace is not attached to any virtual controller other than the first virtual controller; and
transmitting an error response to the first host when the second command requesting the deletion as the operation of the third namespace is received from the first host in a state where the third namespace is attached to any virtual controller other than the first virtual controller.

### Claim 14 (depends on 13)

The control method of claim 13, further comprising:
shifting the third namespace from a state of being attached to the first virtual controller to a detached state, and deleting the third namespace from the nonvolatile memory in a case where the third namespace has been attached to the first virtual controller when the second command requesting deletion of the third namespace is received from the first host in the state where the third namespace is not attached to any virtual controller other than the first virtual controller.

### Claim 15 (depends on 13)

The control method of claim 13, further comprising:
transmitting the error response to the first host in a case where the third namespace has been attached to the first virtual controller when the second command requesting the deletion as the operation of the third namespace is received from the first host in the state where the third namespace is not attached to any virtual controller other than the first virtual controller.

### Claim 16 (depends on 10)

The control method of claim 10, further comprising:
creating a namespace identified by the second command in the storage area of the nonvolatile memory when the second command requesting creation as the operation of the namespace is received from the first host.

### Claim 17 (depends on 10)

The control method of claim 10, further comprising:
managing a first table that stores correspondences between identifiers of the namespace created in the storage area of the nonvolatile memory and identifiers of the namespace in a state of being attached to the virtual controller, the correspondences including the correspondence between the first identifier and the second identifier and the correspondence between the first identifier and the third identifier; and
transmitting the first table to the first host when a fifth command requesting the first table is received from the first host.

### Claim 18 (depends on 10)

The control method of claim 10, further comprising:
managing a first table that stores correspondences between identifiers of the namespace created in the storage area of the nonvolatile memory and identifiers of the namespace in a state of being attached to the virtual controller, the correspondences including the correspondence between the first identifier and the second identifier and the correspondence between the first identifier and the third identifier; and
storing the first table into the nonvolatile memory when a sixth command requesting storage of the first table into the nonvolatile memory is received from the first host.

### Claim 19 (depends on 1)

The memory system of claim 1, wherein the nonvolatile memory includes a NAND flash memory.

### Claim 20 (depends on 10)

The control method of claim 10, wherein the nonvolatile memory includes a NAND flash memory.
