IP Library Granted Patent US 11,543,974
Granted Patent B2
US 11,543,974 · App. 17/153,719 · Granted Jan 3, 2023

System data storage mechanism providing coherency and segmented data loading

Inventors: Jerry Lo (Hacienda Heights, CA); Dominic S. Suryabudi (Irvine, CA); Lan D. Phan (Laguna Hills, CA)
Assignee: Western Digital Technologies, Inc.
G06F3/0619G06F3/065G06F3/0685G06F11/1435G06F12/0246G06F3/0679G06F11/1448G06F11/1458G06F11/1469G06F12/0804
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,543,974
App. No.
17/153,719
Granted
Jan 3, 2023
Kind
B2
Abstract

A data storage subsystem is disclosed that implements a process for storing and/or reconstructing system data, such as a system mapping table. In certain embodiments, table pages are systematically copied, or flushed, to non-volatile memory in a progressive manner, according to a fixed ratio of flushed table pages per table update trigger, thereby facilitating write and/or load efficiency. Full or partial reconstruction of a table may be performed within a bounded number of operations based on the size of the table, the ratio implemented, and/or other characteristics.

Claims (64)

1. A machine-implemented method, comprising:

updating at least one portion of a plurality of portions of a segmented system data in one or more volatile memories;

responsive to the at least one portion of the plurality of portions of the segmented system data being updated, flushing each of the updated at least one portion and a corresponding one further portion of the plurality of portions of the segmented system data per system data update trigger event, from the one or more volatile memories to one or more non-volatile memories; and

reconstructing the segmented system data to the one or more volatile memories from the one or more non-volatile memories,

wherein the reconstructing comprises:

loading one or more segments of the segmented system data from the one or more non-volatile memories to the one or more volatile memories, wherein the plurality of portions of the segmented system data in the one or more non-volatile memories are separated into the one or more segments; and

recovering the segmented system data as fully constructed using a number of operations not less than twice a size of the segmented system data measured in segments.

2. The machine-implemented method of claim 1 , wherein the reconstructing comprises:

reconstructing the segmented system data to the one or more volatile memories, using not greater than a threshold count of read operations,

wherein the threshold count of read operations is less than or equal to T*((R+1)/R),

wherein T is a total count of the plurality of portions in the segmented system data, and

wherein R is an integer value.

3. The machine-implemented method of claim 2 , wherein flushing the each of the updated at least one portion and the corresponding one further portion of the plurality of portions of the segmented system data per system data update trigger event comprising: flushing the updated at least one portion and one or more further portions of the plurality of portions of the segmented system data, wherein R is a predetermined ratio of a predetermined count of flushed portions per system data update trigger event.

4. The machine-implemented method of claim 1 , wherein content of the one or more segments has not been previously loaded to the one or more volatile memories.

5. The machine-implemented method of claim 4 , wherein the reconstructing comprises:

determining whether a data access request, accessing an address within a yet-to-be loaded segment of the segmented system data, is pending; and

processing a segment of the segmented system data associated with the address of the data access request, in response to the data access request being determined to be pending,

wherein the processing comprises:

determining that content of the segment has not been previously loaded to the one or more volatile memories; and

loading the segment to the one or more volatile memories.

6. The machine-implemented method of claim 1 , wherein responsive to no data access request being pending, a first of the one or more segments loaded to the one or more volatile memories comprises a segment associated with an oldest valid portion stored in the one or more non-volatile memories.

7. The machine-implemented method of claim 1 , wherein responsive to no data access request being pending, a first of the one or more segments loaded to the one or more volatile memories comprises a segment associated with one or more portions of the plurality of portions that have been most recently stored to the one or more non-volatile memories.

8. The machine-implemented method of claim 1 , wherein a total number of the updated at least one portion and the corresponding one further portion being flushed is equal to or less than a predetermined count of flushed portions per system data update trigger event.

9. The machine-implemented method of claim 1 , wherein:

the corresponding one further portion is different from the updated at least one portion,

and a total count of the further portions corresponding to the updated at least one portion does not exceed a total count of the plurality of portions of the segmented system data in the one or more volatile memories.

10. The machine-implemented method of claim 1 , wherein the flushing comprises flushing each of the updated at least one portion and the corresponding one further portion, in response to one system data update trigger initiated by a request from a machine, wherein the machine does not comprise the one or more volatile memories or the one or more non-volatile memories.

11. The machine-implemented method of claim 1 , wherein the flushing comprises flushing using a predetermined ratio of a predetermined count of flushed pages per system data update trigger event.

12. A data storage system, comprising:

one or more volatile memories;

one or more non-volatile memories; and

one or more controllers configured to cause:

updating at least one portion of a plurality of portions of a segmented system data in the one or more volatile memories;

responsive to the at least one portion of the plurality of portions of the segmented system data being updated, flushing each of the updated at least one portion and a corresponding one further portion of the plurality of portions of the segmented system data per system data update trigger event, from the one or more volatile memories to one or more non-volatile memories; and

reconstructing the segmented system data to the one or more volatile memories from the one or more non-volatile memories,

wherein the reconstructing comprises:

loading one or more segments of the segmented system data from the one or more non-volatile memories to the one or more volatile memories, wherein the plurality of portions of the segmented system data in the one or more non-volatile memories are separated into the one or more segments; and

recovering the segmented system data as fully constructed using a number of operations not less than twice a size of the segmented system data measured in segments.

13. The data storage system of claim 12 ,

wherein the reconstructing comprises reconstructing the segmented system data to the one or more volatile memories, using not greater than a threshold count of read operations,

wherein the threshold count of read operations is less than or equal to T*((R+1)/R),

wherein T is a total count of the plurality of portions in the segmented system data,

and

wherein R is a predetermined ratio of a predetermined count of flushed portions per system data update trigger event.

14. The data storage system of claim 13 , wherein the reconstructing comprises:

determining whether a data access request, accessing an address within a yet-to-be loaded segment of the segmented system data, is pending; and

processing a segment of the segmented system data associated with the address of the data access request, in response to the data access request being determined to be pending,

wherein the processing comprises:

determining that content of the segment has not been previously loaded to the one or more volatile memories; and

loading the segment to the one or more volatile memories.

15. The data storage system of claim 12 , wherein the flushing comprises flushing using a predetermined ratio of a predetermined count of flushed pages per system data update trigger event.

16. An apparatus, comprising:

means for updating at least one portion of a plurality of portions of a segmented system data in one or more volatile memories;

responsive to the at least one portion of the plurality of portions of the segmented system data being updated, means for flushing each of the updated at least one portion and a corresponding one further portion of the plurality of portions of the segmented system data per system data update trigger event, from the one or more volatile memories to one or more non-volatile memories; and

means for reconstructing the segmented system data to the one or more volatile memories from the one or more non-volatile memories,

wherein the means for reconstructing comprises:

means for loading one or more segments of the segmented system data from the one or more non-volatile memories to the one or more volatile memories, wherein the plurality of portions of the segmented system data in the one or more non-volatile memories are for being separated into the one or more segments; and

means for recovering the segmented system data as fully constructed using a number of operations not less than twice a size of the segmented system data measured in segments.

17. The apparatus of claim 16 , wherein the means for reconstructing comprises:

means for reconstructing the segmented system data to the one or more volatile memories, using not greater than a threshold count of read operations,

wherein the threshold count of read operations is less than or equal to T*((R+1)/R),

wherein T is a total count of the plurality of portions in the segmented system data, and

wherein R is an integer value.

18. The apparatus of claim 16 , wherein the means for flushing comprises means for flushing using a predetermined ratio of a predetermined count of flushed pages per system data update trigger event.

Assignments (10)
SECURITY AGREEMENT (SUPPLEMENTAL) Recorded Nov 14, 2024
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 069411/0208 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 11, 2024
From: SANDISK TECHNOLOGIES, INC.
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 069168/0273 →
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 - DDTL LOAN AGREEMENT Recorded Aug 21, 2023
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 067045/0156 →
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 →
RELEASE OF SECURITY INTEREST AT REEL 055404 FRAME 0942 Recorded Feb 8, 2022
From: JPMORGAN CHASE BANK, N.A.
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 058966/0407 →
SECURITY INTEREST Recorded Feb 24, 2021
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS AGENT
Reel/Frame 055404/0942 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 5, 2021
From: LO, JERRY; SURYABUDI, DOMINIC S.; PHAN, LAN D.
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 055252/0747 →
Continuity (4)
Continuation 16523951 · Jul 26, 2019
Continuation 14923000 · Oct 26, 2015
Continuation 13478036 · May 22, 2012
Related Publication 20210141543A1 · May 13, 2021