# US 10,768,858 B2 · Memory system and method 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 10,768,858 B2
- Document ID: US10768858B2
- Status: Granted
- Kind: B2
- Application number: 16/004,601
- Filed: 2018-06-11
- Published: 2019-06-13
- Granted: 2020-09-08
- Earliest claimed: 2017-12-08
- Assignees: Toshiba Memory Corporation
- Applicants: Toshiba Memory Corporation
- Inventors: Shinichi Kanno; Hideki Yoshida
- Web page: https://patentgrep.com/patent/US10768858B2

## CPC

- G06F 3/0659: {Command handling arrangements, e.g. command buffers, queues, command scheduling}
- G06F 3/0604: {Improving or facilitating administration, e.g. storage management}
- G06F 3/064: {Management of blocks}
- G06F 3/0656: {Data buffering arrangements}
- G06F 3/0679: {Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]}
- G06F 3/0683: {Plurality of storage devices}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

According to one embodiment, a memory system receives, from a host, a write request including a first identifier associated with one write destination block and storage location information indicating a location in a write buffer on a memory of the host in which first data to be written is stored. When the first data is to be written to a nonvolatile memory, the memory system obtains the first data from the write buffer by transmitting a transfer request including the storage location information to the host, transfers the first data to the nonvolatile memory, and writes the first data to the one write destination block.

## Claims

### Claim 1

A memory system connectable to a host, the memory system comprising:
a nonvolatile memory including a plurality of blocks; and
a controller electrically connected to the nonvolatile memory, and configured to manage a plurality of write destination blocks allocated from the plurality of blocks, wherein
the controller is configured to:
receive, from the host, a write request including a first identifier associated with one write destination block and storage location information indicating a location in a write buffer on a memory of the host in which first data to be written to the nonvolatile memory is stored, the write buffer including a plurality of write buffer regions corresponding respectively to the plurality of write destination blocks;
hold the first identifier and the storage location information included in the received write request;
obtain the first data from the write buffer by transmitting, to the host, a transfer request including the first identifier and the storage location information;
transfer the first data to the nonvolatile memory;
instruct the nonvolatile memory to write the first data to the one write destination block;
hold the first data until the transfer of the first data to the nonvolatile memory is finished; and
when the writing of the first data is finished, and further when the first data becomes readable from the nonvolatile memory, notify the host that the first data held in the write buffer is unnecessary.

### Claim 2 (depends on 1)

The memory system of claim 1, wherein
the writing of the first data is performed by a multi-step program operation including a plurality of transfers of the first data to the nonvolatile memory, and
every time each step of the multi-step program operation for transferring the first data is started, the controller is configured to obtain the first data from the write buffer by transmitting, to the host, the transfer request including the first identifier and the storage location information.

### Claim 3 (depends on 1)

The memory system of claim 1, wherein
when a read request to read the first data is received from the host in a period after the writing of the first data is started until the first data becomes readable, the controller is configured to transmit, to the host, a transfer request to return the first data from the write buffer as a response to the read request.

### Claim 4 (depends on 1)

The memory system of claim 1, wherein
when the one write destination block is fully filled with data, the controller is configured to notify the host that a write buffer region in the write buffer corresponding to the one write destination block is unnecessary.

### Claim 5 (depends on 1)

The memory system of claim 1, wherein the memory system is connected to the host via Ethernet.

### Claim 6 (depends on 1)

The memory system of claim 1, wherein the first identifier is a block identifier specifying a specific write destination block.

### Claim 7 (depends on 1)

The memory system of claim 1, wherein the write destination blocks are associated with a plurality of streams, respectively, and the first identifier is an identifier of one of the plurality of streams.

### Claim 8

A method for controlling a nonvolatile memory, the nonvolatile memory including a plurality of blocks, the method comprising:
managing a plurality of write destination blocks allocated from the plurality of blocks;
receiving, from a host, a write request including a first identifier associated with one write destination block and storage location information indicating a location in a write buffer on a memory of the host in which first data to be written to the nonvolatile memory is stored, the write buffer including a plurality of write buffer regions corresponding respectively to the plurality of write destination blocks;
holding the first identifier and the storage location information included in the received write request;
obtaining the first data from the write buffer by transmitting, to the host, a transfer request including the first identifier and the storage location information;
transferring the first data to the nonvolatile memory;
instructing the nonvolatile memory to write the first data to the one write destination block;
holding the first data until the transfer of the first data to the nonvolatile memory is finished; and
when the writing of the first data is finished, and further when the first data becomes readable from the nonvolatile memory, notifying the host that the first data held in the write buffer is unnecessary.

### Claim 9 (depends on 8)

The method of claim 8, wherein
the writing of the first data is performed by a multi-step program operation including a plurality of transfers of the first data to the nonvolatile memory, and
the writing includes obtaining the first data from the write buffer by transmitting, to the host, the transfer request including the first identifier and the storage location information every time each step of the multi-step program operation for transferring the first data is started.

### Claim 10 (depends on 8)

The method of claim 8, further comprising
when a read request to read the first data is received from the host in a period after the writing of the first data is started until the first data becomes readable, transmitting, to the host, a transfer request to return the first data from the write buffer as a response to the read request.

### Claim 11 (depends on 8)

The method of claim 8, further comprising:
notifying the host that a write buffer region in the write buffer corresponding to the one write destination block is unnecessary when the one write destination block is fully filled with data.

### Claim 12 (depends on 8)

The method of claim 8, wherein the first identifier is a block identifier specifying a specific block.

### Claim 13 (depends on 8)

The method of claim 8, wherein the write destination blocks are associated with a plurality of streams, respectively, and the first identifier is an identifier of one of the plurality of streams.
