IP Library Granted Patent US 9,218,279
Granted Patent B2
US 9,218,279 · App. 13/895,016 · Granted Dec 22, 2015

Atomic write command support in a solid state drive

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 9,218,279
App. No.
13/895,016
Granted
Dec 22, 2015
Kind
B2
Abstract

A method of performing an atomic write command in a data storage device comprising a volatile memory and a plurality of non-volatile memory devices configured to store a plurality of physical pages. The method may comprise storing data in a plurality of logical pages (L-Pages), each associated with a logical address. A logical-to-physical address translation map may be maintained in the volatile memory, and may be configured to enable determination of a physical location, within one or more of the physical pages, of the data referenced by each logical address. The data specified by a received atomic write command may be stored one or more L-Pages. Updates to the entry or entries in the translation map associated with the L-Page(s) storing the data specified by the atomic write command may be deferred until all L-Pages storing data specified by the atomic write command have been written in a power-safe manner.

Claims (73)

1. A method of performing an atomic write command in a data storage device comprising a volatile memory and a plurality of non-volatile memory devices that are configured to store a plurality of physical pages, the method comprising:

storing data in a plurality of logical pages (L-Pages), each of the plurality of L-Pages being associated with a logical address;

maintaining a logical-to-physical address translation map in the volatile memory, the translation map being configured to enable determination of a physical location, within one or more of the physical pages, of the data referenced by each logical address;

receiving the atomic write command;

maintaining, in the plurality of non-volatile memory devices, a plurality of system journals (S-Journals) defining physical-to-logical address correspondences, each journal comprising a plurality of system journal entries, each entry configured to associate the one or more physical pages to an L-Page;

storing data specified by the atomic write command in at least one L-Page, the storing further comprising generating an S-Journal entry for each of the at least one L-Page storing data specified by the atomic write command, the generated S-Journal entry being configured to enable a determination of whether the atomic write command was completed or not completed upon reconstruction of the translation map; and

deferring an update to at least one entry in the translation map associated with the at least one L-Page storing the data specified by the atomic write command until all L-Pages storing data specified by the atomic write command have been written in a power-safe manner.

2. The method of claim 1 , wherein storing data specified by the atomic write command comprises:

storing, in the volatile memory, mapping information related to the atomic write command, the mapping information including an indication of the physical location of each L-Page storing the data specified by the atomic write command.

3. The method of claim 2 , further comprising:

after all L-Pages storing the data specified by the atomic write command are written, updating the at least one entry in the translation map associated with the at least one L-Page with the indication of the physical location.

4. The method of claim 3 , further comprising:

acknowledging a completion of the atomic write command to a host coupled to the data storage device after the translation map has been updated.

5. The method of claim 2 , wherein the translation map is configured to store mapping entries spanning at least a portion of a logical capacity of the data storage device and wherein the mapping information for the atomic write command includes one or more logical addresses that extend beyond the logical capacity of the data storage device.

6. The method of claim 2 , wherein the mapping information for the atomic write command is stored separately from the translation map.

7. The method of claim 1 , wherein each S-Journal entry for the atomic write command comprises one of a plurality of unique sequence numbers and an indication of a physical location, within the non-volatile memory devices, of one L-Page storing data specified by the atomic write command.

8. The method of claim 7 , further comprising writing the sequence number and the indication of physical location that is part of the S-Journal entry in a header associated with the one L-Page.

9. The method of claim 7 , further comprising generating the unique sequence number, wherein each sequence number generated is configured to be non-repeating.

10. The method of claim 7 , further comprising providing a plurality of slots in a power-safe temporary storage, each slot being configured to store one of the plurality of unique sequence numbers.

11. The method of claim 10 , wherein each slot is not used for consecutive sequence numbers.

12. The method of claim 10 , further comprising:

saving a unique sequence number for a current or next atomic write command in the power-safe temporary storage.

13. The method of claim 12 , further comprising one of changing, in the power-safe temporary storage, the unique sequence number associated with the atomic write command after the atomic write command is completed and before acknowledging the completion of the atomic write command to a host coupled to the data storage device.

14. The method of claim 12 , further comprising determining whether an atomic write command has completed during reconstruction of the translation map by comparing the unique sequence number stored in the S-Journal entry with the unique sequence number stored in the power-safe temporary storage.

15. The method of claim 14 , wherein a match between the unique sequence number stored in the S-Journal entry and the unique sequence number stored in the power-safe temporary storage indicates an incomplete atomic write command.

16. The method of claim 10 , wherein the power-safe temporary storage comprises one of a magnetic random access memory (MRAM), a battery-backed random access memory and a non-volatile random access memory (NVRAM).

17. The method of claim 1 , further comprising:

deferring free space accounting until after all L-Pages storing data specified by the atomic write command have been stored in the non-volatile memory devices and the atomic write command is determined to have completed.

18. The method of claim 1 , further comprising:

receiving a non-atomic write command;

storing data specified by the non-atomic write command in at least one L-Page; and

updating the translation map after each L-Page storing data specified by the non-atomic write command data is written.

19. The method of claim 1 , further comprising:

storing information tracking a range of L-Pages in which the writing of at least some L-Pages specified by the atomic write command have been completed;

in the event the atomic write command does not complete, at reconstruction:

using the stored tracking information to generate a copy command that copies a current version of L-Pages within the range that existed before the atomic write command.

20. A data storage device controller, comprising:

a processor, the processor being configured to perform an atomic write command in a data storage device comprising a volatile memory and a plurality of non-volatile memory devices that are configured to store a plurality of physical pages, by at least:

storing data in a plurality of logical pages (L-Pages), each of the plurality of L-Pages being associated with a logical address;

maintaining a logical-to-physical address translation map in the volatile memory, the translation map being configured to enable determination of a physical location, within one or more of the physical pages, of the data referenced by each logical address;

receiving the atomic write command;

maintaining, in the plurality of non-volatile memory devices, a plurality of system journals (S-Journals) defining physical-to-logical address correspondences, each journal comprising a plurality of system journal entries, each entry configured to associate the one or more physical pages to an L-Page;

storing data specified by the atomic write command in at least one L-Page, the storing further comprising generating an S-Journal entry for each of the at least one L-Page storing data specified by the atomic write command, the generated S-Journal entry being configured to enable a determination of whether the atomic write command was completed or not completed upon reconstruction of the translation map; and

deferring an update to at least one entry in the translation map associated with the at least one L-Page storing the data specified by the atomic write command until all L-Pages storing data specified by the atomic write command have been written in a power-safe manner.

21. The data storage device controller of claim 20 , wherein storing data specified by the atomic write command comprises:

storing, in the volatile memory, mapping information related to the atomic write command, the mapping information including an indication of the physical location of each L-Page storing the data specified by the atomic write command.

22. The data storage device controller of claim 21 , wherein the processor is further configured to, after all L-Pages storing the data specified by the atomic write command are written, update the at least one entry in the translation map associated with the at least one L-Page with the indication of the physical location.

23. The data storage device controller of claim 22 , wherein the processor is further configured to acknowledge a completion of the atomic write command to a host coupled to the data storage device after the translation map has been updated.

24. The data storage device controller of claim 21 , wherein the translation map is configured to store mapping entries spanning at least a portion of a logical capacity of the data storage device and wherein the mapping information for the atomic write command includes one or more logical addresses that extend beyond the logical capacity of the data storage device.

25. The data storage device controller of claim 21 , wherein the mapping information for the atomic write command is stored separately from the translation map.

26. The data storage device controller of claim 20 , wherein each S-Journal entry for the atomic write command comprises one of a plurality of unique sequence numbers and an indication of a physical location, within the non-volatile memory devices, of one L-Page storing data specified by the atomic write command.

27. The data storage device controller of claim 26 , wherein the processor is further configured to write the sequence number and the indication of physical location that is part of the S-Journal entry in a header associated with the one L-Page.

28. The data storage device controller of claim 26 , wherein the processor is further configured to generate the unique sequence number, wherein each sequence number generated is configured to be non-repeating.

29. The data storage device controller of claim 26 , wherein the processor is further configured to provide a plurality of slots in a power-safe temporary storage, each slot being configured to store one of the plurality of unique sequence numbers.

30. The data storage device controller of claim 29 , wherein each slot is not used for consecutive sequence numbers.

31. The data storage device controller of claim 29 , wherein the processor is further configured to save a unique sequence number for a current or next atomic write command in the power-safe temporary storage.

32. The data storage device controller of claim 31 , wherein the processor is further configured to change, in power-safe temporary storage, the unique sequence number associated with the atomic write command after the atomic write command is completed and before acknowledging the completion of the atomic write command to a host coupled to the data storage device.

33. The data storage device controller of claim 31 , wherein the processor is further configured to determine whether an atomic write command has completed during reconstruction of the translation map by comparing the unique sequence number stored in the S-Journal entry with the unique sequence number stored in the power-safe temporary storage.

34. The data storage device controller of claim 33 , wherein a match between the unique sequence number stored in the S-Journal entry and the unique sequence number stored in the power-safe temporary storage indicates an incomplete atomic write command.

35. The data storage device controller of claim 29 , wherein the power-safe temporary storage comprises one of a magnetic random access memory (MRAM), a battery-backed random access memory and a non-volatile random access memory (NVRAM).

36. The data storage device controller of claim 20 , wherein the processor is further configured to defer free space accounting until after all L-Pages storing data specified by the atomic write command have been stored in the non-volatile memory devices and the atomic write command is determined to have completed.

37. The data storage device controller of claim 20 , wherein the processor is further configured to:

receive a non-atomic write command;

store data specified by the non-atomic write command in at least one L-Page; and

update the translation map after each L-Page storing data specified by the non-atomic write command data is written.

38. The data storage device controller of claim 20 , wherein the processor is further configured to:

store information tracking a range of L-Pages in which the writing of at least some L-Pages specified by the atomic write command have been completed;

in the event the atomic write command does not complete, at reconstruction:

use the stored tracking information to generate a copy command that copies a current version of L-Pages within the range that existed before the atomic write command.

39. A data storage device, comprising:

the volatile memory;

the plurality of non-volatile memory devices; and

the data storage device controller of claim 20 .

Assignments (14)
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 038744 FRAME 0481 Recorded Feb 8, 2022
From: JPMORGAN CHASE BANK, N.A.
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 058982/0556 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 29, 2018
From: SKYERA, LLC
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 046726/0328 →
RELEASE OF SECURITY INTEREST Recorded Mar 5, 2018
From: U.S. BANK NATIONAL ASSOCIATION, AS COLLATERAL AGENT
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 045501/0714 →
SECURITY AGREEMENT Recorded May 17, 2016
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 038744/0481 →
SECURITY AGREEMENT Recorded May 17, 2016
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 038722/0229 →
SECURITY AGREEMENT Recorded May 17, 2016
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: U.S. BANK NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 038744/0281 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 30, 2015
From: MULLENDORE, RODNEY N
To: SKYERA, INC.
Reel/Frame 036214/0987 →
CHANGE OF NAME Recorded Jul 17, 2015
From: SKYERA, INC.
To: SKYERA, LLC
Reel/Frame 036129/0673 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 1, 2015
From: TOMLIN, ANDREW J.; JONES, JUSTIN
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 035545/0941 →
RELEASE OF SECURITY INTEREST Recorded Jan 6, 2015
From: DELL PRODUCTS L.P.
To: SKYERA, LLC
Reel/Frame 034742/0069 →
SECURITY INTEREST Recorded Nov 11, 2014
From: SKYERA, INC.
To: WESTERN DIGITAL CAPITAL, INC.
Reel/Frame 034204/0849 →
SECURITY INTEREST Recorded Aug 14, 2014
From: SKYERA, INC.
To: DELL PRODUCTS L.P.
Reel/Frame 033546/0001 →