# US 10,503,412 B2 · Priority-based internal data movement

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

- Number: US 10,503,412 B2
- Document ID: US10503412B2
- Status: Granted
- Kind: B2
- Application number: 15/604,575
- Filed: 2017-05-24
- Published: 2018-11-29
- Granted: 2019-12-10
- Earliest claimed: 2017-05-24
- Assignees: Western Digital Technologies, Inc.
- Applicants: Western Digital Technologies, Inc.
- Inventors: Yun-Tzuo Lai; Haining Liu; Subhash Balakrishna Pillai
- Web page: https://patentgrep.com/patent/US10503412B2

## CPC

- G06F 3/0616: {in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]}
- G06F 3/0647: {Migration mechanisms}
- G06F 3/0656: {Data buffering arrangements}
- G06F 3/0659: {Command handling arrangements, e.g. command buffers, queues, command scheduling}
- 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

A data storage device that provides priority-based internal data movement includes a controller communicatively coupled to volatile memory and to non-volatile memory circuits, where the controller is configured to queue requests in a plurality of queues in the volatile memory, where each of the requests is associated with one of a plurality of internal data movement command types. The controller is also configured to select one of the plurality of queues based on a prioritization of the plurality of internal data movement command types. The controller is also configured to determine that the selected queue includes at least one request of the associated internal data movement command type. The controller is also configured to issue the at least one request from the selected queue to at least one of the non-volatile memory circuits.

## Claims

### Claim 1

A data storage device comprising:
a plurality of queues;
a plurality of processors, each of the plurality of processors configured to queue one or more requests associated with a respective one of a plurality of internal data movement command types, each of the one or more requests being queued into one of the plurality of queues for the associated internal data movement command type; and
a scheduler communicably coupled to the plurality of queues, the scheduler configured to:
identify a turn among the plurality of internal data movement command types based on a prioritization of the plurality of internal data movement command types;
select one of the plurality of queues based on the identified turn; and
issue one of the one or more queued requests of the selected queue based on the associated internal data movement command type, the one of the one or more queued requests being issued to at least one of a plurality of non-volatile memory circuits,
wherein the plurality of internal data movement command types comprises a garbage collection command type, a data relocation command type, and a wear leveling command type, and
wherein the prioritization comprises:
setting the data relocation command type and the wear leveling command type into a group;
selecting the group or the garbage collection command type in a round robin order; and
when the group is selected, giving a higher priority to select the data relocation command type over the wear leveling command type.

### Claim 2 (depends on 1)

The data storage device of claim 1, wherein the scheduler is further configured to:
determine whether the selected queue includes at least one request of the associated internal data movement command type,
wherein the one of the one or more queued requests is issued when the selected queue is determined to include the at least one request.

### Claim 3 (depends on 1)

The data storage device of claim 1, wherein the scheduler is configured to alternate from the garbage collection command type to the data relocation command type based on the identified turn indicating the data relocation command type.

### Claim 4 (depends on 3)

The data storage device of claim 3, wherein the scheduler is configured to alternate from the garbage collection command type to the wear leveling command type based on the identified turn indicating the wear leveling command type.

### Claim 5 (depends on 4)

The data storage device of claim 4, wherein the scheduler is further configured to:
determine whether the identified turn indicates the garbage collection command type or the group that comprises the data relocation command type and the wear leveling command type, wherein a first queue of the plurality of queues is configured to store a request of the garbage collection command type, wherein a second queue of the plurality of queues is configured to store a request of the data relocation command type, and wherein a third queue of the plurality of queues is configured to store a request of the wear leveling command type.

### Claim 6 (depends on 5)

The data storage device of claim 5, wherein the scheduler is further configured to:
determine that the identified turn indicates the garbage collection command type;
determine that the first queue includes at least one request of the garbage collection command type; and
provide the at least one request of the garbage collection command type for issuance to the at least one of the plurality of non-volatile memory circuits.

### Claim 7 (depends on 5)

The data storage device of claim 5, wherein the scheduler is further configured to:
determine that the identified turn indicates the data relocation command type;
determine that the second queue includes at least one request of the data relocation command type; and
provide the at least one request of the data relocation command type for issuance to the at least one of the plurality of non-volatile memory circuits.

### Claim 8 (depends on 5)

The data storage device of claim 5, wherein the scheduler is further configured to:
determine that the identified turn indicates the wear leveling command type;
determine that the third queue includes at least one request of the wear leveling command type; and
provide the at least one request of the wear leveling command type for issuance to the at least one of the plurality of non-volatile memory circuits.

### Claim 9 (depends on 5)

The data storage device of claim 5, wherein the scheduler is further configured to:
determine whether the second queue is empty when the identified turn indicates the group, wherein the identified turn indicates the wear leveling command type when it is determined that the second queue is empty.

### Claim 10 (depends on 5)

The data storage device of claim 5, wherein the scheduler is further configured to:
determine that a first turn in the prioritization does not indicate the garbage collection command type the first turn indicating the data relocation command type;
determine whether the second queue includes at least one request of the data relocation command type; and
provide the at least one request of the data relocation command type for issuance to the at least one of a plurality of non-volatile memory circuits when it is determined that the second queue includes the at least one request of the data relocation command type.

### Claim 11 (depends on 10)

The data storage device of claim 10, wherein the scheduler is further configured to:
identify a second turn in the prioritization when it is determined that the second queue does not include the at least one request of the data relocation command type, the second turn indicating the garbage collection command type, the second turn being subsequent to the first turn;
determine whether the first queue includes at least one request of the garbage collection command type; and
provide the at least one request of the garbage collection command type for issuance to the at least one of a plurality of non-volatile memory circuits when it is determined that the first queue includes the at least one request of the garbage collection command type.

### Claim 12 (depends on 11)

The data storage device of claim 11, wherein the scheduler is further configured to:
identify a third turn in the prioritization when it is determined that the first queue does not include the at least one request of the garbage collection command type, the third turn indicating the wear leveling command type, the third turn being subsequent to the second turn;
determine whether the third queue includes at least one request of the wear leveling command type;
provide the at least one request of the wear leveling command type for issuance to the at least one of a plurality of non-volatile memory circuits when it is determined that the third queue includes the at least one request of the wear leveling command type; and
identify a fourth turn in the prioritization when it is determined that the third queue does not include the at least one request of the wear leveling command type, the fourth turn indicating the garbage collection command type, the fourth turn being subsequent to the third turn.

### Claim 13 (depends on 1)

The data storage device of claim 1, wherein giving the higher priority to select the data relocation command type over the wear leveling command type comprises: selecting the wear leveling command type only after all of one or more of the plurality of queues associated with the data relocation command type are empty.

### Claim 14

A system comprising:
non-volatile memory circuits;
a volatile memory including a plurality of queues; and
a controller communicatively coupled to the volatile memory and to the non-volatile memory circuits, the controller configured to:
queue requests in the plurality of queues, each of the requests being associated with one of a plurality of internal data movement command types;
select one of the plurality of queues based on a prioritization of the plurality of internal data movement command types;
determine that the selected queue includes at least one request of the associated internal data movement command type; and
issue the at least one request from the selected queue to at least one of the non-volatile memory circuits,
wherein the plurality of internal data movement command types comprises a garbage collection command type, a data relocation command type, and a wear leveling command type, and
wherein the prioritization comprises:
setting the data relocation command type and the wear leveling command type into a group;
selecting the group or the garbage collection command type in a round robin order; and
when the group is selected, giving a higher priority to select the data relocation command type over the wear leveling command type.

### Claim 15 (depends on 14)

The system of claim 14, wherein the controller is further configured to:
determine whether a turn in the prioritization indicates the garbage collection command type or the group that comprises the data relocation command type and the wear leveling command type for selection, wherein a first queue of the plurality of queues is configured to store a request of the garbage collection command type, wherein a second queue of the plurality of queues is configured to store a request of the data relocation command type, and wherein a third queue of the plurality of queues is configured to store a request for the wear leveling command type.

### Claim 16 (depends on 15)

The system of claim 15, wherein the controller is further configured to:
determine that a first turn in the prioritization does not indicate the garbage collection command type, the first turn indicating the data relocation command type;
determine whether the second queue includes at least one request of the data relocation command type; and
provide the at least one request of the data relocation command type for issuance to the at least one of a plurality of non-volatile memory circuits when it is determined that the second queue includes the at least one request of the data relocation command type.

### Claim 17 (depends on 16)

The system of claim 16, wherein the controller is further configured to:
identify a second turn in the prioritization when it is determined that the second queue does not include the at least one request of the data relocation command type, the second turn indicating the garbage collection command type;
determine whether the first queue includes at least one request of the garbage collection command type; and
provide the at least one request of the garbage collection command type for issuance to the at least one of a plurality of non-volatile memory circuits when it is determined that the first queue includes the at least one request of the garbage collection command type.

### Claim 18 (depends on 17)

The system of claim 17, wherein the controller is further configured to:
identify a third turn in the prioritization when it is determined that the first queue does not include the at least one request of the garbage collection command type, the third turn indicating the wear leveling command type;
determine whether the third queue includes at least one request of the wear leveling command type;
provide the at least one request of the wear leveling command type for issuance to the at least one of a plurality of non-volatile memory circuits when it is determined that the third queue includes the at least one request of the wear leveling command type; and
identify a fourth turn in the prioritization when it is determined that the third queue does not include the at least one request of the wear leveling command type, the fourth turn indicating the garbage collection command type, the fourth turn being subsequent to the third turn.

### Claim 19

A method comprising:
queuing requests in a plurality of queues in volatile memory, each of the requests being associated with one of a plurality of internal data movement command types;
selecting one of the plurality of queues based on a prioritization of the plurality of internal data movement command types;
determining that the selected queue includes at least one request of the associated internal data movement command type; and
issuing the at least one request from the selected queue to at least one non-volatile memory circuit,
wherein the plurality of internal data movement command types comprises a garbage collection command type, a data relocation command type, and a wear leveling command type, and
wherein the prioritization comprises:
setting the data relocation command type and the wear leveling command type into a group;
selecting the group or the garbage collection command type in a round robin order; and
when the group is selected, giving a higher priority to select the data relocation command type over the wear leveling command type.

### Claim 20

A system comprising:
means for queuing one or more requests associated with a respective one of a plurality of internal data movement command types, each of the one or more requests being queued in one of a plurality of queues for the associated internal data movement command type;
means for identifying a turn among the plurality of internal data movement command types based on a prioritization of the plurality of internal data movement command types;
means for selecting one of the plurality of queues based on the identified turn; and
means for issuing one of the one or more queued requests from the selected queue to at least one of a plurality of non-volatile memory circuits,
wherein the plurality of internal data movement command types comprises a garbage collection command type, a data relocation command type, and a wear leveling command type, and
wherein the prioritization comprises:
setting the data relocation command type and the wear leveling command type into a group;
selecting the group or the garbage collection command type in a round robin order; and
when the group is selected, giving a higher priority to select the data relocation command type over the wear leveling command type.
