IP Library Granted Patent US 10,990,296
Granted Patent B2
US 10,990,296 · App. 16/695,052 · Granted Apr 27, 2021

Priority-based data movement

Inventors: Yun-Tzuo Lai (Irvine, CA); Haining Liu (Irvine, CA); Subhash Balakrishna Pillai (Irvine, CA)
Assignee: WESTERN DIGITAL TECHNOLOGIES. INC.
G06F3/0616G06F3/0647G06F3/0656G06F3/0659G06F3/0679
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,990,296
App. No.
16/695,052
Granted
Apr 27, 2021
Kind
B2
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 (57)

1. A method, comprising:

storing requests into queues, each of the requests associated with one of data movement command types, wherein the data movement command types comprise a garbage collection command type, a data relocation command type, and a wear leveling command type;

selecting one of the queues based on a prioritization of the data movement command types; and

transferring, to non-volatile memory, one of the requests associated with the selected one of the queues, wherein the one of the requests is associated with a respective one of the data movement command types,

wherein the prioritization comprises: arranging the data relocation command type and the wear leveling command type into a group; selecting one of the group or the garbage collection command type; and when the group is selected, providing a priority to select the data relocation command type within the group.

2. The method of claim 1 , further comprising: determining that the selected one of the queues comprises the one of the requests associated with the respective one of the data movement command types.

3. The method of claim 1 , wherein providing the priority to select the data relocation command type within the group comprises: selecting the wear leveling command type only after all of one or more of the queues associated with the data relocation command type are empty.

4. The method of claim 1 , wherein selecting the one of the group or the garbage collection command type comprises: selecting the one of the group or the garbage collection command type in a round robin process.

5. The method of claim 1 , comprising:

determining whether a turn in the prioritization indicates the garbage collection command type or the group for selection, wherein a first queue of the queues is configured to store a request of the garbage collection command type, wherein a second queue of the queues is configured to store a request of the data relocation command type, and wherein a third queue of the queues is configured to store a request for the wear leveling command type.

6. The method of claim 5 , comprising:

determining that a first turn in the prioritization does not indicate the garbage collection command type, the first turn indicating the data relocation command type;

determining whether the second queue includes at least one request of the data relocation command type; and

providing the at least one request of the data relocation command type for issuance to the non-volatile memory when it is determined that the second queue includes the at least one request of the data relocation command type.

7. The method of claim 6 , comprising:

identifying 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;

determining whether the first queue includes at least one request of the garbage collection command type; and

providing the at least one request of the garbage collection command type for issuance to the non-volatile memory when it is determined that the first queue includes the at least one request of the garbage collection command type.

8. The method of claim 7 , comprising:

identifying 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;

determining whether the third queue includes at least one request of the wear leveling command type;

providing the at least one request of the wear leveling command type for issuance to the non-volatile memory when it is determined that the third queue includes the at least one request of the wear leveling command type; and

identifying 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.

9. A data storage device, comprising:

queues;

non-volatile memory; and

a controller configured to cause:

storing requests into the queues, each of the requests associated with one of data movement command types, wherein the data movement command types comprise a garbage collection command type, a data relocation command type, and a wear leveling command type;

selecting one of the queues based on a prioritization of the data movement command types; and

transferring, to the non-volatile memory, one of the requests associated with the selected one of the queues, wherein the one of the requests is associated with a respective one of the data movement command types,

wherein the prioritization comprises: aggregating the data relocation command type and the wear leveling command type into a group; selecting one of the group or the garbage collection command type; and when the group is selected, providing a priority to select the data relocation command type within the group.

10. The data storage device of claim 9 , wherein the controller is configured to cause determining that the selected one of the queues comprises the one of the requests associated with the respective one of the data movement command types.

11. The data storage device of claim 9 , wherein providing the priority to select the data relocation command type within the group comprises: selecting the wear leveling command type only after all of one or more of the queues associated with the data relocation command type are empty.

12. The data storage device of claim 9 , wherein selecting the one of the group or the garbage collection command type comprises: selecting the one of the group or the garbage collection command type in a round robin process.

13. The data storage device of claim 9 , wherein the controller is configured to cause:

determining whether a turn in the prioritization indicates the garbage collection command type or the group for selection, wherein a first queue of the queues is configured to store a request of the garbage collection command type, wherein a second queue of the queues is configured to store a request of the data relocation command type, and wherein a third queue of the queues is configured to store a request for the wear leveling command type.

14. The data storage device of claim 13 , wherein the controller is configured to cause:

determining that a first turn in the prioritization does not indicate the garbage collection command type, the first turn indicating the data relocation command type;

determining whether the second queue includes at least one request of the data relocation command type; and

providing the at least one request of the data relocation command type for issuance to the non-volatile memory when it is determined that the second queue includes the at least one request of the data relocation command type.

15. The data storage device of claim 14 , wherein the controller is configured to cause:

identifying 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;

determining whether the first queue includes at least one request of the garbage collection command type; and

providing the at least one request of the garbage collection command type for issuance to the non-volatile memory when it is determined that the first queue includes the at least one request of the garbage collection command type.

16. The data storage device of claim 15 , wherein the controller is configured to cause:

identifying 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;

determining whether the third queue includes at least one request of the wear leveling command type;

providing the at least one request of the wear leveling command type for issuance to the non-volatile memory when it is determined that the third queue includes the at least one request of the wear leveling command type; and

identifying 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.

17. A system, comprising:

means for storing requests into queues, each of the requests associated with one of data movement command types, wherein the data movement command types comprise a garbage collection command type, a data relocation command type, and a wear leveling command type;

means for selecting one of the queues based on a prioritization of the data movement command types; and

means for transferring, to non-volatile memory, one of the requests associated with the selected one of the queues, wherein the one of the requests is associated with a respective one of the data movement command types,

wherein the prioritization comprises: arranging the data relocation command type and the wear leveling command type into a group; selecting one of the group or the garbage collection command type; and when the group is selected, providing a priority to select the data relocation command type within the group.

18. The system of claim 17 , further comprising: means for determining that the selected one of the queues comprises the one of the requests associated with the respective one of the data movement command types.

19. The system of claim 17 , wherein providing the priority to select the data relocation command type within the group comprises: selecting the wear leveling command type only after all of one or more of the queues associated with the data relocation command type are empty.

20. The system of claim 17 , wherein selecting the one of the group or the garbage collection command type comprises: selecting the one of the group or the garbage collection command type in a round robin process.

Assignments (10)
SECURITY AGREEMENT Recorded Apr 25, 2025
From: SANDISK TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 071050/0001 →
PARTIAL RELEASE OF SECURITY INTERESTS Recorded Apr 25, 2025
From: JPMORGAN CHASE BANK, N.A., AS AGENT
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 071382/0001 →
PATENT COLLATERAL AGREEMENT Recorded Aug 23, 2024
From: SANDISK TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS THE AGENT
Reel/Frame 068762/0494 →
CHANGE OF NAME Recorded Jun 27, 2024
From: SANDISK TECHNOLOGIES, INC.
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 067982/0032 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 29, 2024
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 067567/0682 →
PATENT COLLATERAL AGREEMENT - A&R LOAN AGREEMENT Recorded Aug 21, 2023
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 064715/0001 →
PATENT COLLATERAL AGREEMENT - DDTL LOAN AGREEMENT Recorded Aug 21, 2023
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 067045/0156 →
RELEASE OF SECURITY INTEREST AT REEL 052025 FRAME 0088 Recorded Feb 8, 2022
From: JPMORGAN CHASE BANK, N.A.
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 058965/0699 →
SECURITY INTEREST Recorded Feb 26, 2020
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS AGENT
Reel/Frame 052025/0088 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 5, 2019
From: LAI, YUN-TZUO; LIU, HAINING; PILLAI, SUBHASH BALAKRISHNA
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 051190/0694 →