# US 12,216,937 B2 · Storage device, controller and controller operation method with improved program operation efficiency

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

- Number: US 12,216,937 B2
- Document ID: US12216937B2
- Status: Granted
- Kind: B2
- Application number: 18/325,722
- Filed: 2023-05-30
- Published: 2024-07-18
- Granted: 2025-02-04
- Earliest claimed: 2023-01-12
- Assignees: SK hynix Inc.
- Applicants: SK hynix Inc.
- Inventors: Jung Woo Kim
- Web page: https://patentgrep.com/patent/US12216937B2

## CPC

- G06F 3/061: {Improving I/O performance}
- 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/0608: {Saving storage space on 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 12/0246: {in block erasable memory, e.g. flash memory}
- G06F 2212/1016: Performance improvement
- G06F 2212/1032: Reliability improvement, data loss prevention, degraded operation etc
- G06F 2212/7203: Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
- G06F 2212/7207: management of metadata or control data
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

When a program operation to a second memory of user data in a first memory is to be performed and the size of user data is smaller than a unit program size of the second memory, final data having a size equal to the unit program size may be produced by concatenating the user data and meta data, and the final data may then programmed into the second memory. The second memory may be non-volatile memory, and the meta data may be meta data for the second memory. In some cases, dummy data may also be concatenated with the user data and meta data to produce the final data. Accordingly, it is possible to perform the program operation according to the unit program size and improve the program operation efficiency by reducing the number of program operations performed to store meta data.

## Claims

### Claim 1

A method performed by a controller, the method comprising:
storing user data in a first memory; and
when the user data is to be programmed to a second memory and a size of the user data is smaller than a unit program size:
selecting one or more meta data from among a plurality of meta data by comparing respective sizes of the one or more meta data with a difference between the unit program size and the size of the user data and according to respective priorities of the plurality of meta data,
producing final data by concatenating the user data and the one or more meta data, and
programming the final data in the second memory,
wherein selecting the one or more meta data includes selecting a portion of a first meta data among the plurality of meta data when a size of a second meta data of the plurality of meta data is less than a size of the first meta data and a priority of the first meta data is greater than a priority of the second meta data.

### Claim 2 (depends on 1)

The method of claim 1, wherein producing the final data comprises concatenating the user data, the one or more meta data, and dummy data.

### Claim 3 (depends on 1)

The method of claim 1, wherein the user data is to be programmed to a second memory in response to receiving an execution command.

### Claim 4

A controller comprising:
a volatile memory;
a data storage module configured to store user data input from outside the controller in the volatile memory; and
a program control module configured to, when an execution command is input from a host device in a state that a size of the user data stored in the volatile memory is smaller than a unit program size:
select one or more meta data from among a plurality of meta data according to a difference between the size of the user data and the unit program size, respective sizes of the plurality of meta data, and respective priorities of the plurality of meta data;
produce final data by concatenating the user data and the one or more meta data, and control an operation of programming the final data into an externally located non-volatile memory,
wherein selecting the one or more meta data includes selecting a portion of a first meta data among the plurality of meta data when a size of a second meta data of the plurality of meta data is less than a size of the first meta data and a priority of the first meta data is greater than a priority of the second meta data.

### Claim 5 (depends on 4)

The controller of claim 4, wherein program control module is further configured to select the one or more meta data from a plurality of meta data based on comparison results between respective sizes of the plurality of meta data and a difference between the unit program size and the size of the user data.

### Claim 6 (depends on 4)

The controller of claim 4, wherein program control module is further configured to select the one or more meta data from a plurality of meta data based on an update time of the plurality of meta data.

### Claim 7

A storage device comprising:
a non-volatile memory;
a volatile memory storing user data to be programmed into the non-volatile memory; and
a controller configured to, when an execution command is received from a host device in a state that a size of the user data stored in the volatile memory is smaller than a unit program size:
select one or more meta data from among a plurality of meta data according to a difference between the size of the user data and the unit program size, respective sizes of the plurality of meta data, and respective priorities of the plurality of meta data;
produce final data by concatenating the user data and the one or more meta data; and
program the final data into the non-volatile memory,
wherein selecting the one or more meta data includes selecting a portion of a first meta data among the plurality of meta data when a size of a second meta data of the plurality of meta data is less than a size of the first meta data and a priority of the first meta data is greater than a priority of the second meta data.

### Claim 8 (depends on 7)

The storage device of claim 7, wherein a sum of the size of the user data and a size of the one or more meta data is equal to or less than the unit program size.

### Claim 9 (depends on 7)

The storage device of claim 7, wherein selecting the one or more meta data comprises;
selecting the portion of the first meta data when the size of the second meta data is less than the size of the first meta data, the priority of the first meta data is greater than the priority of the second meta data, and the size of the first meta data is greater than a size of a remaining portion,
wherein the size of the remaining portion corresponds to a difference between the unit program size and a sum of the size of the user data and respective sizes of one or more already-selected meta data when there is one or more already-selected meta data, and corresponds to the difference between the unit program size and the size of the user data otherwise.

### Claim 10 (depends on 7)

The storage device of claim 7, wherein the final data comprises the user data, the one or more meta data, and dummy data.

### Claim 11 (depends on 7)

The storage device of claim 7, wherein the controller compares the difference between the unit program size and the size of the user data with the respective sizes of each of the plurality of meta data to determine the one or more meta data.

### Claim 12 (depends on 11)

The storage device of claim 11, wherein the controller sequentially compares the difference between the unit program size and the size of the user data with the respective sizes of each of the plurality of meta data starting from the largest value among the sizes of each of the plurality of meta data.

### Claim 13 (depends on 7)

The storage device of claim 7, wherein the controller is configured to determine the one or more meta data by:
comparing a first size of a first meta data to a first difference between the unit program size and the size of the user data; and
when the first difference is equal to or greater than the first size:
including the first meta data in the one or more meta data;
when a second size of a second meta data is less than or equal to the first size:
comparing the second size to a second difference between the unit program size and the sum of the size of the user data and the first size, and
when the second size is equal to or less than the second difference, including the second meta data in the one or more meta data.

### Claim 14 (depends on 13)

The storage device of claim 13, wherein the controller is further configured to determine the one or more meta data by:
when the second size is less than the second difference and a third size of a third meta data is less than or equal to the second size:
comparing the third size to a third difference between the unit program size and the sum of the size of the user data, the first size, and the second size; and
when the third size is equal to or less than the third difference, including the third meta data in the one or more meta data.

### Claim 15 (depends on 13)

The storage device of claim 13, wherein the controller is further configured to determine the one or more meta data by:
when the second difference is smaller than the second size and a third size of a third meta data is less than the second size:
comparing the third size to the second difference, and
when the third size is equal to or less than the second difference, including the third meta data in the one or more meta data.

### Claim 16 (depends on 13)

The storage device of claim 13, wherein the controller is configured to determine the one or more meta data by:
when the first difference is less the first size, including an other meta data having a size less than the first size in the one or more meta data.

### Claim 17 (depends on 7)

The storage device of claim 7, wherein the controller is further configured to produce the final data by concatenating the user data, the one or more meta data, and dummy data when a sum of the size of the user data and a size of the one or more meta data is less than the unit program size.

### Claim 18 (depends on 7)

The storage device of claim 7, wherein the controller is further configured to:
set the respective priorities for the plurality of meta data based on respective update times of the plurality of meta data.

### Claim 19 (depends on 7)

The storage device of claim 7, wherein the one or more meta data comprises map data, log data, Self-Monitoring, Analysis and Reporting Technology (SMART) data, or combinations thereof.

### Claim 20 (depends on 7)

The storage device of claim 7, wherein the one or more meta data includes update map data in which an update has occurred from among map data stored in the volatile memory.
