# US 12,223,206 B2 · Data storage device and method for dynamic controller memory buffer allocation

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

- Number: US 12,223,206 B2
- Document ID: US12223206B2
- Status: Granted
- Kind: B2
- Application number: 18/223,144
- Filed: 2023-07-18
- Published: 2024-07-11
- Granted: 2025-02-11
- Earliest claimed: 2023-01-05
- Assignees: SanDisk Technologies LLC
- Applicants: Western Digital Technologies, Inc.
- Inventors: Judah Gamliel Hahn; Alexander Bazarsky; Micha Yonin
- Web page: https://patentgrep.com/patent/US12223206B2

## CPC

- G06F 3/0659: {Command handling arrangements, e.g. command buffers, queues, command scheduling}
- G06F 3/0626: {Reducing size or complexity of storage systems}
- G06F 3/0656: {Data buffering arrangements}
- G06F 3/0679: {Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]}
- G06F 2213/0026: PCI express
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A data storage device and method for dynamic controller memory buffer allocation are disclosed. In one embodiment, a data storage device is provided comprising a memory and a controller with a controller memory buffer. The controller is configured to communicate with the non-volatile memory and is further configured to configure a size of the controller memory buffer; receive a request from the host to modify the size of the controller memory buffer during operation of the data storage device; and determine whether to grant the request to modify the size of the controller memory buffer. Other embodiments are possible, and each of the embodiments can be used alone or together in combination.

## Claims

### Claim 1

A method comprising:
performing in a host in communication with a data storage device comprising a volatile memory and a controller memory buffer created from a portion of the volatile memory:
storing host data in another portion of the volatile memory;
receiving a request from the data storage device to increase a size of the controller memory buffer;
determining whether to grant the request; and
in response to determining to grant the request, increasing the size of the controller memory buffer by evicting at least some of the host data from the another portion of the volatile memory to free space in the volatile memory.

### Claim 2 (depends on 1)

The method of claim 1, wherein the data storage device is configured to use excess space in the controller memory buffer not being used by the host.

### Claim 3 (depends on 1)

The method of claim 1, wherein workload is considered in determining whether to grant the request.

### Claim 4 (depends on 1)

The method of claim 1, wherein the request comprises a dedicated command.

### Claim 5 (depends on 1)

The method of claim 1, wherein the data storage device and the host each comprise respective controller memory buffer allocation modules.

### Claim 6 (depends on 1)

The method of claim 1, further comprising determining to deny the request in response to the request seeking to enlarge a size of the controller memory buffer beyond its maximum size.

### Claim 7 (depends on 1)

The method of claim 1, further comprising causing prioritization of data for eviction.

### Claim 8 (depends on 1)

The method of claim 1, further comprising sending a confirmation to the data storage device after granting the request.

### Claim 9

A data storage device comprising:
a non-volatile memory;
a volatile memory; and
means for:
configuring a size of a controller memory buffer created from a portion of the volatile memory, wherein the controller memory buffer is configured for use by a host;
storing controller data in another portion of the volatile memory;
receiving a request from the host to increase the size of the controller memory buffer during operation of the data storage device;
determining whether to grant the request; and
in response to determining to grant the request, increasing the size of the controller memory buffer by evicting at least some of the controller data from the another portion of the volatile memory to free space in the volatile memory.

### Claim 10

A data storage device comprising:
a non-volatile memory;
a volatile memory; and
a controller comprising a processor, wherein the processor is configured to communicate with the non-volatile memory and the volatile memory and is further configured to:
configure a size of a controller memory buffer created from a portion of the volatile memory, wherein the controller memory buffer is configured for use by a host;
store controller data in another portion of the volatile memory;
receive a request from the host to increase the size of the controller memory buffer during operation of the data storage device;
determine whether to grant the request; and
in response to determining to grant the request, increase the size of the controller memory buffer by evicting at least some of the controller data from the another portion of the volatile memory to free space in the volatile memory.

### Claim 11 (depends on 10)

The data storage device of claim 10, wherein the processor is further configured to use excess space in the controller memory buffer not being used by the host.

### Claim 12 (depends on 10)

The data storage device of claim 10, wherein the processor is further configured to consider workload in determining whether to grant the request.

### Claim 13 (depends on 10)

The data storage device of claim 10, wherein the request comprises a dedicated command.

### Claim 14 (depends on 10)

The data storage device of claim 10, wherein the controller and host each comprise respective controller memory buffer allocation modules.

### Claim 15 (depends on 10)

The data storage device of claim 10, wherein the processor is further configured to deny the request in response to the request seeking to enlarge a size of the controller memory buffer beyond its maximum size.

### Claim 16 (depends on 1)

The data storage device of claim 1, wherein the processor is further configured to prioritize data in the controller memory buffer for eviction.

### Claim 17 (depends on 10)

The data storage device of claim 10, wherein the processor is further configured to send a confirmation to the host after granting the request.

### Claim 18 (depends on 10)

The data storage device of claim 10, wherein the non-volatile memory comprises a three-dimensional memory.
