IP Library › Granted Patent US 12,271,633
Granted Patent B2
US 12,271,633 · App. 18/625,096 · Granted Apr 8, 2025

Techniques for managing writes in nonvolatile memory

Inventors: Mike Jadon (Manhattan Beach, CA); Andrey V. Kuzmin (Moscow, RU); Robert Lercari (Thousand Oaks, CA)
Assignee: Radian Memory Systems, LLC
G06F3/0659G06F3/0604G06F3/0679G06F12/10G06F2212/657
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 12,271,633
App. No.
18/625,096
Granted
Apr 8, 2025
Kind
B2
Abstract

This disclosure provides techniques for managing writes of data useful for storage systems that do not permit overwrite of a logical address. One implementation provides a nonvolatile memory storage drive, such as a flash memory drive, that provides support for zoned drive and/or Open Channel-compliant architectures. Circuitry on the storage drive tracks storage location release metadata for addressable memory space, optionally providing to a host system information upon which maintenance decisions or related scheduling can be based. The storage drive can also provide buffering support for accommodating receipt of out-of-order writes and unentanglement and performance of out of order writes, with buffering resources being configurable according to any one of a number of parameters. The disclosed storage drive facilitates reduced error rates and lower request traffic in a manner consistent with newer memory standards that mandate that writes to logical addresses be sequential.

Claims (88)

1. A storage system comprising:

a host; and

a solid state storage drive (SSD) comprising:

flash memory having erase units, wherein the flash memory is to have one or more namespaces at a first hierarchical level, and subdivisions at a second hierarchical level, the subdivisions each being mapped to a respective set of one or more of the erase units;

a buffer memory; and

a host interface configured to receive commands from a host, the commands including a write command compatible with a Non-Volatile Memory Express (NVMe) standard, the host interface being operable to receive, in association with the write command:

a designation of a specific namespace of the one or more namespaces;

write data; and

an identifier associated with a specific one of the subdivisions;

logic operable to cause the SSD to:

store the write data in a portion of the buffer memory, wherein the portion of the buffer memory has been allocated by the SSD to the specific one of the subdivisions prior to receipt, by the host interface, of the write command;

copy the write data from the portion of the buffer memory to an erase unit in the set of one or more erase units which is respective to the specific one of the subdivisions;

track write data validity information for the specific one of the subdivisions; and

dependent on the write data validity information, perform garbage collection in a manner dedicated to the specific one of the subdivisions;

wherein, as part of the garbage collection, the logic is operable to cause the SSD to copy the write data to a destination erase unit of the flash memory, the destination erase unit being selected dependent on the specific one of the subdivisions; and

wherein the said logic comprises at least one of (1) instructional logic stored on a physical storage medium or (2) hardware logic; and

wherein the host is operable to transmit one or more query commands to the SSD and responsively receive, from the SSD, information representing the identifier of the specific one of the subdivisions, and a capacity.

2. The storage system of claim 1 wherein:

the subdivisions are open subdivisions;

the SSD also comprises empty subdivisions;

the portion is a first portion;

the logic is operable to cause the SSD, prior to receipt of the write command, to allocate portions of the buffer memory to respective ones of the subdivisions, the portions including the first portion; and

the logic is operable, upon receipt by the SSD of a second write command directed to one of the empty subdivisions, dynamically allocate a portion of the buffer memory to the one of the empty subdivisions.

3. The storage system of claim 2 wherein the logic is operable to cause the SSD to store a value that represents a maximum number of the portions of the buffer memory.

4. The storage system of claim 3 wherein:

the SSD is to receive a query command from the host; and

the logic is operable to, responsive to the query command, cause the SSD to transmit information, to the host, which represents the stored value.

5. The storage system of claim 1 wherein the logic is operable to cause the SSD to store a value that represents a number of the subdivisions and, in response to receipt of a query command from the host, transmit information, to the host, representing the number of subdivisions.

6. The storage system of claim 1 wherein the flash memory comprises dies, the dies to be organized into die groups, each die group having one or more of the dies, on a mutually-exclusive basis, wherein each die group is associated with a respective ID.

7. The storage system of claim 6 wherein:

the SSD is to receive a query command from the host; and

the logic is operable to, responsive to the query command, cause the SSD to transmit, to the host, information representing one or more of the respective IDs.

8. The storage system of claim 6 wherein:

the host interface is to receive, in association with the write command, a specific ID, the specific ID corresponding to a host-selected one of the die groups; and

the erase unit in the set of one or more erase units which is respective to the specific one of the subdivisions is in a die belonging to the host-selected one of the die groups.

9. The storage system of claim 1 wherein the logic is operable to cause the SSD to detect a power loss event and, responsive to detection of the power loss event, automatically initiate a copy of data from the buffer memory to a storage location in the flash memory.

10. The storage system of claim 9 wherein:

the SSD further comprises at least one energy storage component; and

the logic is operable to cause the SSD to configure the buffer memory dependent on a capacity of the at least one energy storage component.

11. The storage system of claim 1 wherein:

the SSD further comprises at least one energy storage component; and

a size of the buffer memory is dependent upon a capacity of the at least one energy storage component.

12. The storage system of claim 11 wherein the logic is operable to cause the SSD to transmit, to the host, information which identifies the size of the buffer memory.

13. The storage system of claim 1 wherein:

the logic is operable to cause the SSD to transmit, to the host, responsive to the receipt of one or more query commands from the host, information indicating a capacity of the specific one of the subdivisions; and

the capacity is equal to a number of host accessible storage locations provided by an integer number of flash memory erase units.

14. The storage system of claim 13 wherein the capacity corresponds to a preprogrammed number of logical block addresses (LBAs).

15. The storage system of claim 1 wherein:

the erase units of the flash memory each comprise pages, the pages each having a page size; and

a size of the portion of the SSD buffer memory is at least partially dependent upon the page size.

16. The storage system of claim 1 wherein:

the host is operable to issue a maintenance command directed to the specific one of the subdivisions;

the SSD is operable to receive the maintenance command, via the host interface; and

the logic is operable to responsively control the physical erasure of one or more erase units in the set of one or more of the erase units which is respective to the specific one of the subdivisions.

17. The storage system of claim 1 wherein:

the flash memory comprises planes, each of the planes being associated with respective subsets of the erase units of the flash memory; and

the specific one of the subdivisions comprises erase units associated with different ones of the planes.

18. The storage system of claim 1 wherein the logic is operable to cause the SSD to receive from the host, via the host interface, a query command, and to responsively transmit to the host a number of the subdivisions, including the specific one of the subdivisions.

19. The storage system of claim 1 wherein:

the write data validity information is first metadata; and

the logic is operable to cause the SSD to store second metadata respective to each of the subdivisions, including the specific one of the subdivisions, the second metadata indicating an extent to which the respective subdivision is full.

20. The storage system of claim 19 wherein:

the SSD is to receive a query command from the host, via the host interface; and

the logic is operable to cause the SSD to responsively transmit, to the host, information dependent on the second metadata.

21. The storage system of claim 1 wherein:

each of the subdivisions is configured according a respective parameter stored by the SSD; and

each of the subdivisions is indexed according to an associated handle.

22. The storage system of claim 1 wherein:

the SSD is to receive a query command from the host; and

the logic is operable to, responsive to the query command, cause the SSD to transmit information, to the host, which represents a remaining quantity of space available for the specific one of the subdivisions to receive additional write data.

23. The storage system of claim 1 wherein:

the write command is a first write command;

each of the erase units of the flash memory comprises pages;

each of the pages is sized so as to correspond to data associated with N logical block addresses (LBAs), where N is greater than one; and

the logic is operable to cause the SSD to accumulate, in the buffer memory, write data for multiple write commands, including the first write command, each of the multiple write commands being compatible with a NVMe standard, until write data corresponding to N LBAs is stored in the buffer memory, and to then copy the accumulated write data corresponding to the N LBAs into storage locations in the flash memory.

24. The storage system of claim 1 wherein:

the flash memory further comprises P planes, where P is greater than 1;

the write command is a first write command;

each of the erase units of the flash memory comprises pages;

each of the pages is sized so as to correspond to data associated with N logical block addresses (LBAs), where N is greater than one; and

the set of erase units which is mapped to the specific one of the subdivisions comprises at least one erase unit in each of the P planes; and

the logic is operable to cause the SSD to accumulate, in the buffer memory, write data for multiple write commands, including the first write command, each of the multiple write commands being compatible with a NVMe standard, until write data corresponding to (N*P) LBAs is stored in the buffer memory, and to then copy the accumulated write data corresponding to the (N*P) LBAs into storage locations in the flash memory.

25. The storage system of claim 1 wherein:

the write command received from the host comprises address information; and

the logic is operable to perform a division operation on the address information, using a divisor that is dependent on a number of access-enabled structures at a given hierarchical level, to identify an address for a structure at the given hierarchical level and an address for a structure at another hierarchical level.

26. The storage system of claim 1 wherein:

the logic is operable to, in association with the garbage collection, mark as invalid content of the erase unit in the set of one or more erase units which is respective to the specific one of the subdivisions; and

the logic is operable to, following the copy of the write data to the destination erase unit, physically erase, automatically, the erase unit in the set of the one or more erase units which is respective to the specific one of the subdivisions.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 2, 2024
From: KUZMIN, ANDREY V.; ROBERT, LERCARI; JADON, MIKE
To: RADIAN MEMORY SYSTEMS, INC.
Reel/Frame 066984/0905 →
Continuity (4)
Continuation 18097024 · Jan 13, 2023
Continuation 17313926 · May 6, 2021
Provisional Application 63020661 · May 6, 2020
Related Publication 20250053338A1 · Feb 13, 2025
References Cited (73)
US 4532590A · Wallach · 1985 [cited by applicant]
US 4813002A · Joyce · 1989 [cited by applicant]
US 5404485A · Ban · 1995 [cited by applicant]
US 6118724A · Higgenbottom · 2000 [cited by applicant]
US 6145069A · Dye · 2000 [cited by applicant]
US 6148354A · Ban · 2000 [cited by applicant]
US 6430650B1 · Miyauchi · 2002 [cited by applicant]
US 6571312B1 · Sugai · 2003 [cited by applicant]
US 7383375B2 · Sinclair · 2008 [cited by applicant]
US 7814262B2 · Sinclair · 2010 [cited by applicant]
US 7934074B2 · Lee · 2011 [cited by applicant]
US 8195912B2 · Flynn · 2012 [cited by applicant]
US 8219776B2 · Forhan · 2012 [cited by applicant]
US 8291151B2 · Sinclair · 2012 [cited by applicant]
US 8291295B2 · Harari · 2012 [cited by applicant]
US 8423710B1 · Gole · 2013 [cited by applicant]
US 8495280B2 · Kang · 2013 [cited by applicant]
US 8668894B2 · Kuehne · 2014 [cited by applicant]
US 8700961B2 · Lassa · 2014 [cited by applicant]
US 8954708B2 · Kim · 2015 [cited by applicant]
US 8959307B1 · Bruce · 2015 [cited by applicant]
US 8996796B1 · Karamcheti · 2015 [cited by applicant]
US 9123443B2 · Chung · 2015 [cited by applicant]
US 9286198B2 · Bennett · 2016 [cited by applicant]
US 9329986B2 · Li · 2016 [cited by applicant]
US 9405621B2 · Yu · 2016 [cited by applicant]
US 9565269B2 · Malwankar · 2017 [cited by applicant]
US 9575672B2 · Yamamoto · 2017 [cited by applicant]
US 9734086B2 · Flynn · 2017 [cited by applicant]
US 9858008B2 · Liu · 2018 [cited by applicant]
US 10067866B2 · Sutardja · 2018 [cited by applicant]
US 11068408B2 · Kim · 2021 [cited by applicant]
US 11075984B1 · Mercier · 2021 [cited by applicant]
US 11301421B2 · Petters · 2022 [cited by examiner]
US 11487678B2 · Park · 2022 [cited by applicant]
US 11500766B2 · Bueb · 2022 [cited by applicant]
US 11580030B2 · Das · 2023 [cited by applicant]
US 11586385B1 · Lercari · 2023 [cited by applicant]
US 20080195833A1 · Park · 2008 [cited by applicant]
US 20080307192A1 · Sinclair · 2008 [cited by applicant]
US 20100125702A1 · Lee · 2010 [cited by applicant]
US 20100199065A1 · Kaneda · 2010 [cited by applicant]
US 20100299494A1 · Van Acht · 2010 [cited by applicant]
US 20110041039A1 · Harari · 2011 [cited by applicant]
US 20110138114A1 · Yen · 2011 [cited by applicant]
US 20110238890A1 · Sukegawa · 2011 [cited by applicant]
US 20120159037A1 · Kwon · 2012 [cited by applicant]
US 20120221776A1 · Yoshihashi · 2012 [cited by applicant]
US 20120246394A1 · Ou · 2012 [cited by applicant]
US 20130227201A1 · Talagala · 2013 [cited by applicant]
US 20130232297A1 · Tanaka · 2013 [cited by applicant]
US 20140047210A1 · Cohen · 2014 [cited by applicant]
US 20140047300A1 · Liang · 2014 [cited by applicant]
US 20160019148A1 · Vekiarides · 2016 [cited by applicant]
US 20160034221A1 · Zettsu · 2016 [cited by applicant]
US 20160253091A1 · Ayyavu · 2016 [cited by applicant]
US 20180046480A1 · Dong · 2018 [cited by applicant]
US 20200133719A1 · Chinthekindi · 2020 [cited by examiner]
US 20200363996A1 · Kanno · 2020 [cited by applicant]
US 20210064293A1 · Cho · 2021 [cited by applicant]
US 20210216412A1 · Navon · 2021 [cited by examiner]
US 20210223994A1 · Kanno · 2021 [cited by applicant]
US 20230051328A1 · Barczak · 2023 [cited by examiner]
Kang et al., “A Superblock-based Flash Translation Layer for NAND Flash Memory,” EMSOFT'06, Seoul, Korea, Oct. 22, 2006, ACM 1-59593-542-8/06/0010, pp. 161-170. [cited by applicant]
TN-29-28: Memory Management in NAND Flash Arrays, Micron publication, 2005, 10 pages, available from https://www.micron.com/-/media/client/global/documents/products/technical-note/nand-flash/tn2928.pdf. [cited by applicant]
Park et al., “A Reconfigurable FTL (Flash Translation Layer) Architecture for NAND Flash-Based Applications,” 23 pages, ACM Transactions on Embedded Computing Systems, vol. 7, No. 4, Article 38, Publication date: Jul. 2… [cited by applicant]
Gupta et al., “DFTL: A Flash Translation Layer Employing Demand-based Selective Caching of Page-level Address Mappings,” ASPLOS'09, Mar. 7-11, 2009, Washington, DC, USA, 12 pages. [cited by applicant]
Ruia, Virtualization of Non-Volatile Ram, Texas A&M Masters Thesis, 77 pages, May 2015, available from: https://oaktrust.library.tamu.edu/bitstream/handle/1969.1/154981/RUIA-THESIS-2015.pdf?sequence=1&isAllowed=y. [cited by applicant]
Hsieh et al., “Efficient Identification of Hot Data for Flash Memory Storage Systems, ”ACM Transactions on Storage, vol. 2, No. 1, Feb. 2006, 19 Pages (pp. 22-40). [cited by applicant]
Wu et al., “An Adaptive Two-Level Management for the Flash Translation Layer in Embedded Systems ,” https://dl.acm.org/doi/pdf/10.1145/1233501.1233624, Date of Publication: Nov. 9, 2006. [cited by applicant]
Grupp et al., “Characterizing Flash Memory: Anomalies, Observations, and Applications,” https://dl.acm.org/doi/pdf/10.1145/1669112.1669118, Dec. 16, 2006. [cited by applicant]
Huang et al., “Unified Address Translation for Memory-Mapped SSDs with FlashMap,” https://dl.acm.org/doi/10.1145/2749469.2750420, Jun. 15, 2015. [cited by applicant]
Bang et al., “A Memory Hierarchy-Aware Metadata Management Technique for Solid State Disks,” https://ieeexplore.ieee.org/document/6026485, Aug. 10, 2011. [cited by applicant]
Cited By (1)
US 12,724,570