IP Library Granted Patent US 10,942,656
Granted Patent B2
US 10,942,656 · App. 16/523,951 · Granted Mar 9, 2021

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 10,942,656
App. No.
16/523,951
Granted
Mar 9, 2021
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 (74)

1. A data storage system, comprising:

a volatile memory;

a non-volatile memory; and

a controller configured to cause:

updating at least a page of a system table in the volatile memory, wherein when the at least a page is updated, the controller is configured to cause:

flushing, from the volatile memory to the non-volatile memory, the updated at least a page in the volatile memory; and

flushing, from the volatile memory to the non-volatile memory, one or more additional pages of the system table in the volatile memory, based at least on a predetermined ratio of a predetermined count of flushed pages per system table update trigger event, wherein the one or more additional pages are different than the at least a page; and

reconstructing one or more pages of the system table stored in the non-volatile memory to the volatile memory.

2. The data storage system of claim 1 , wherein a sum of a count of the flushed at least a page and a count of the flushed one or more additional pages is equal to or less than the predetermined count of flushed pages.

3. The data storage system of claim 1 , wherein:

when the at least a page is updated in the volatile memory, the one or more additional pages are not updated in the volatile memory in response to the updating of the at least a page, and

a count of the one or more additional pages does not exceed a total count of pages of the system table in the volatile memory.

4. The data storage system of claim 2 , wherein the controller configured to cause updating at least a page of the system table in the volatile memory comprises:

the controller configured to cause, flushing the updated at least a page and the one or more additional pages, in response to one system table update trigger initiated by a host command.

5. The data storage system of claim 1 , wherein the controller configured to cause reconstructing one or more pages of the system table comprises:

the controller configured to cause reconstructing the system table to the volatile memory, using not more 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 pages in the system table, and

wherein R is an integer value.

6. The data storage system of claim 5 , wherein R is the predetermined ratio of the predetermined count of flushed pages per system table update trigger event.

7. The data storage system of claim 1 , wherein the controller configured to cause reconstructing one or more pages of the system table comprises the controller configured to cause:

loading one or more segments from the non-volatile memory to the volatile memory, wherein one or more pages of the system table in the non-volatile memory are divided into the one or more segments; and

recovering the system table using a number of operations less than or equal to twice a size of the system table measured in segments.

8. The data storage system of claim 7 , wherein content of the one or more segments has not been previously loaded to the volatile memory.

9. The data storage system of claim 8 , wherein the controller configured to cause reconstructing one or more pages of the system table comprises the controller configured to cause:

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

processing a segment associated with the address of the data access request, when the data access request accessing the address within the yet-to-be loaded segment of the system table is determined to be pending,

wherein the processing comprises:

determining that content of the segment has not been previously loaded to the volatile memory; and

loading the segment to the volatile memory.

10. The data storage system of claim 7 , wherein when no data access request is pending, a first of the one or more segments loaded to the volatile memory comprises a segment associated with one or more pages that have been most recently stored to the non-volatile memory.

11. The data storage system of claim 7 , wherein when no data access request is pending, a first of the one or more segments loaded to the volatile memory comprises a segment associated with an oldest valid page stored in the non-volatile memory.

12. A machine-implemented method, comprising:

updating at least a page of a system table in a volatile memory;

when the at least a page is updated:

flushing, from the volatile memory to a non-volatile memory, the updated at least a page in the volatile memory; and

flushing, from the volatile memory to the non-volatile memory, one or more additional pages of the system table in the volatile memory, based at least on a predetermined ratio of a predetermined count of flushed pages per system table update trigger event; and

reconstructing one or more pages of the system table stored in the non-volatile memory to the volatile memory.

13. The machine-implemented method of claim 12 , wherein:

when the at least a page is updated in the volatile memory, the one or more additional pages are not updated in the volatile memory in response to the updating of the at least a page, and

a count of the one or more additional pages does not exceed a total count of pages of the system table in the volatile memory.

14. The machine-implemented method of claim 12 , wherein the reconstructing one or more pages of the system table comprises:

reconstructing the system table to the volatile memory, using not more 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 pages in the system table, and

wherein R is an integer value.

15. The machine-implemented method of claim 14 , wherein R is the predetermined ratio of the predetermined count of flushed pages per system table update trigger event.

16. The machine-implemented method of claim 12 , wherein the reconstructing one or more pages of the system table comprises:

loading one or more segments from the non-volatile memory to the volatile memory,

wherein one or more pages of the system table in the non-volatile memory are divided into the one or more segments, and

wherein content of the one or more segments has not been previously loaded to the volatile memory;

when a data access request, accessing an address within a yet-to-be loaded segment of the system table, is pending:

loading a segment associated with the address of the data access request, to the volatile memory, when content of the segment has not been previously loaded to the volatile memory; and

recovering the system table using a number of operations less than or equal to twice a size of the system table measured in segments.

17. An apparatus, comprising:

means for updating at least a page of a system table in a volatile memory, wherein the means for updating comprises:

means for flushing, from the volatile memory to a non-volatile memory, the updated at least a page in the volatile memory; and

means for flushing, from the volatile memory to the non-volatile memory, one or more additional pages of the system table in the volatile memory, based at least on a predetermined ratio of a predetermined count of flushed pages per system table update trigger event, wherein the one or more additional pages are different than the at least a page; and

means for reconstructing one or more pages of the system table stored in the non-volatile memory to the volatile memory.

18. The apparatus of claim 17 , wherein:

when the at least a page is updated in the volatile memory, the one or more additional pages are not updated in the volatile memory in response to the updating of the at least a page, and

a count of the one or more additional pages does not exceed a total count of pages of the system table in the volatile memory.

19. The apparatus of claim 17 , wherein the means for reconstructing one or more pages of the system table comprises:

means for reconstructing the system table to the volatile memory, using not more 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 pages in the system table, and

wherein R is the predetermined ratio of the predetermined count of flushed pages per system table update trigger event.

20. The apparatus of claim 17 , wherein the means for reconstructing one or more pages of the system table comprises:

means for loading one or more segments from the non-volatile memory to the volatile memory,

wherein one or more pages of the system table in the non-volatile memory are divided into the one or more segments, and

wherein content of the one or more segments has not been previously loaded to the volatile memory;

when a data access request, accessing an address within a yet-to-be loaded segment of the system table, is pending:

means for loading a segment associated with the address of the data access request, to the volatile memory, when content of the segment has not been previously loaded to the volatile memory; and

means for recovering the system table using a number of operations less than or equal to twice a size of the system table measured in segments.

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 052915 FRAME 0566 Recorded Feb 8, 2022
From: JPMORGAN CHASE BANK, N.A.
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 059127/0001 →
SECURITY INTEREST Recorded Feb 6, 2020
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS AGENT
Reel/Frame 052915/0566 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 5, 2019
From: LO, JERRY; SURYABUDI, DOMINIC S.; PHAN, LAN D.
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 049962/0384 →