IP Library Granted Patent US 11,487,437
Granted Patent B2
US 11,487,437 · App. 17/222,861 · Granted Nov 1, 2022

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 11,487,437
App. No.
17/222,861
Granted
Nov 1, 2022
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 (61)

1. A data storage system, comprising:

non-volatile memory; and

one or more controllers configured to cause:

determining one or more instruction issuing priorities based on a prioritization of data command types for the data storage system, wherein the data command types comprise a garbage collection command type, a data relocation command type, and a wear leveling command type; and

issuing one or more instructions, to the non-volatile memory, based on the one or more instruction issuing priorities, wherein an instruction of the one or more instructions is associated with a respective one of the data command types,

wherein the prioritization comprises: identifying one of a grouping or the garbage collection command type, wherein the grouping comprises the data relocation command type and the wear leveling command type; and when the grouping is identified, providing a priority to identify the data relocation command type within the grouping.

2. The data storage system of claim 1 , comprising memory locations,

wherein determining the one or more instruction issuing priorities comprises determining whether a given priority in the prioritization identifies the garbage collection command type or the grouping, wherein a first memory location of the memory locations is configured to store an instruction of the garbage collection command type, wherein a second memory location of the memory locations is configured to store an instruction of the data relocation command type, and wherein a third memory location of the memory locations is configured to store an instruction for the wear leveling command type.

3. The data storage system of claim 2 ,

wherein determining the one or more instruction issuing priorities comprises:

determining that a first priority in the prioritization does not identify the garbage collection command type, the first priority identifying the data relocation command type; and

determining whether the second memory location includes at least one instruction of the data relocation command type, and

wherein issuing the one or more instructions comprises providing the at least one instruction of the data relocation command type for issuance to the non-volatile memory when it is determined that the second memory location includes the at least one instruction of the data relocation command type.

4. The data storage system of claim 3 ,

wherein determining the one or more instruction issuing priorities comprises:

establishing a second priority in the prioritization when it is determined that the second memory location does not include the at least one instruction of the data relocation command type, the second priority indicating the garbage collection command type; and

determining whether the first memory location includes at least one instruction of the garbage collection command type, and

wherein issuing the one or more instructions comprises providing the at least one instruction of the garbage collection command type for issuance to the non-volatile memory when it is determined that the first memory location includes the at least one instruction of the garbage collection command type.

5. The data storage system of claim 4 ,

wherein determining the one or more instruction issuing priorities comprises:

establishing a third priority in the prioritization when it is determined that the first memory location does not include the at least one instruction of the garbage collection command type, the third priority indicating the wear leveling command type; and

determining whether the third memory location includes at least one instruction of the wear leveling command type,

wherein issuing the one or more instructions comprises providing the at least one instruction of the wear leveling command type for issuance to the non-volatile memory when it is determined that the third memory location includes the at least one instruction of the wear leveling command type, and

wherein determining the one or more instruction issuing priorities comprises:

establishing a fourth priority in the prioritization when it is determined that the third memory location does not include the at least one instruction of the wear leveling command type, the fourth priority indicating the garbage collection command type, the fourth priority being subsequent to the third priority.

6. The data storage system of claim 1 , wherein identifying the one of the grouping or the garbage collection command type comprises: identifying the one of the grouping or the garbage collection command type in a round robin process.

7. The data storage system of claim 1 , comprising memory locations, wherein the one or more controllers are configured to cause writing instructions to the memory locations, wherein each of the instructions is associated with one of the data command types, wherein the instructions comprise a garbage collection instruction, a data relocation instruction, and a wear leveling instruction, and wherein determining the one or more instruction issuing priorities comprises identifying one of the memory locations based on the prioritization of the data command types.

8. The data storage system of claim 7 , wherein providing the priority to identify the data relocation command type within the grouping comprises identifying the wear leveling command type only after all of one or more of the memory locations associated with the data relocation command type are empty.

9. A machine-implemented method, comprising:

determining one or more instruction issuing priorities based on a prioritization of data command types, wherein the data command types comprise a garbage collection command type, a data relocation command type, and a wear leveling command type; and

issuing one or more instructions, to non-volatile memory, based on the one or more instruction issuing priorities, wherein an instruction of the one or more instructions is associated with a respective one of the data command types,

wherein the prioritization comprises: identifying one of a grouping or the garbage collection command type, wherein the grouping comprises the data relocation command type and the wear leveling command type; and when the grouping is identified, providing a priority to identify the data relocation command type within the grouping.

10. The machine-implemented method of claim 9 , wherein determining the one or more instruction issuing priorities comprises determining whether a given priority in the prioritization identifies the garbage collection command type or the grouping, wherein a first memory location of memory locations is configured to store an instruction of the garbage collection command type, wherein a second memory location of the memory locations is configured to store an instruction of the data relocation command type, and wherein a third memory location of the memory locations is configured to store an instruction for the wear leveling command type.

11. The machine-implemented method of claim 10 ,

wherein determining the one or more instruction issuing priorities comprises:

determining that a first priority in the prioritization does not identify the garbage collection command type, the first priority identifying the data relocation command type; and

determining whether the second memory location includes at least one instruction of the data relocation command type, and

wherein issuing the one or more instructions comprises providing the at least one instruction of the data relocation command type for issuance to the non-volatile memory when it is determined that the second memory location includes the at least one instruction of the data relocation command type.

12. The machine-implemented method of claim 11 ,

wherein determining the one or more instruction issuing priorities comprises:

establishing a second priority in the prioritization when it is determined that the second memory location does not include the at least one instruction of the data relocation command type, the second priority indicating the garbage collection command type; and

determining whether the first memory location includes at least one instruction of the garbage collection command type, and

wherein issuing the one or more instructions comprises providing the at least one instruction of the garbage collection command type for issuance to the non-volatile memory when it is determined that the first memory location includes the at least one instruction of the garbage collection command type.

13. The machine-implemented method of claim 12 ,

wherein determining the one or more instruction issuing priorities comprises:

establishing a third priority in the prioritization when it is determined that the first memory location does not include the at least one instruction of the garbage collection command type, the third priority indicating the wear leveling command type; and

determining whether the third memory location includes at least one instruction of the wear leveling command type,

wherein issuing the one or more instructions comprises providing the at least one instruction of the wear leveling command type for issuance to the non-volatile memory when it is determined that the third memory location includes the at least one instruction of the wear leveling command type, and

wherein determining the one or more instruction issuing priorities comprises:

establishing a fourth priority in the prioritization when it is determined that the third memory location does not include the at least one instruction of the wear leveling command type, the fourth priority indicating the garbage collection command type, the fourth priority being subsequent to the third priority.

14. The machine-implemented method of claim 9 , wherein identifying the one of the grouping or the garbage collection command type comprises: identifying the one of the grouping or the garbage collection command type in a round robin process.

15. The machine-implemented method of claim 9 , comprising writing instructions to memory locations, wherein each of the instructions is associated with one of the data command types, wherein the instructions comprise a garbage collection instruction, a data relocation instruction, and a wear leveling instruction, and wherein determining the one or more instruction issuing priorities comprises identifying one of the memory locations based on the prioritization of the data command types.

16. The machine-implemented method of claim 15 , wherein providing the priority to identify the data relocation command type within the grouping comprises identifying the wear leveling command type only after all of one or more of the memory locations associated with the data relocation command type are empty.

17. An apparatus, comprising:

non-volatile memory;

means for determining one or more instruction issuing priorities based on a prioritization of data command types, wherein the data command types comprise a garbage collection command type, a data relocation command type, and a wear leveling command type; and

means for issuing one or more instructions, to the non-volatile memory, based on the one or more instruction issuing priorities, wherein an instruction of the one or more instructions is associated with a respective one of the data command types,

wherein the prioritization comprises: identifying one of a grouping or the garbage collection command type, wherein the grouping comprises the data relocation command type and the wear leveling command type; and when the grouping is identified, providing a priority to identify the data relocation command type within the grouping.

18. The apparatus of claim 17 , wherein identifying the one of the grouping or the garbage collection command type comprises identifying the one of the grouping or the garbage collection command type in a round robin process.

19. The apparatus of claim 17 , comprising means for writing instructions to memory locations, wherein each of the instructions is associated with one of the data command types, wherein the instructions comprise a garbage collection instruction, a data relocation instruction, and a wear leveling instruction, and wherein the means for determining the one or more instruction issuing priorities comprises means for identifying one of the memory locations based on the prioritization of the data command types.

20. The apparatus of claim 19 , wherein providing the priority to identify the data relocation command type within the grouping comprises identifying the wear leveling command type only after having all of one or more of the memory locations associated with the data relocation command type being empty.

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 056285 FRAME 0292 Recorded Feb 8, 2022
From: JPMORGAN CHASE BANK, N.A.
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 058982/0001 →
SECURITY INTEREST Recorded May 19, 2021
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS AGENT
Reel/Frame 056285/0292 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 9, 2021
From: LAI, YUN-TZUO; LIU, HAINING; PILLAI, SUBHASH BALAKRISHNA
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 055883/0535 →
Continuity (3)
Continuation 16695052 · Nov 25, 2019
Continuation 15604575 · May 24, 2017
Related Publication 20210223965A1 · Jul 22, 2021