IP Library › Granted Patent US 12,724,570
Granted Patent B1
US 12,724,570 · App. 19/067,637 · Granted Sep 1, 2026

Techniques for managing writes in nonvolatile memory

Inventors: Robert Lercari (Thousand Oaks, CA); Mike Jadon (Manhattan Beach, CA); Andrey V. Kuzmin (Moscow, RU)
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,724,570
App. No.
19/067,637
Granted
Sep 1, 2026
Kind
B1
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 (127)

1 . A storage device comprising:

flash memory having erase units, each of the erase units having storage locations, wherein the flash memory supports namespaces and groups, each of the groups being associated with a respective set of one or more of the erase units on a mutually-exclusive basis;

a buffer memory;

a register;

a host interface; and

logic operable to cause the storage device to:

receive, via the host interface, write requests and a configuration command;

as a function of the configuration command, store a selective one of a first value or a second value of a setting in the register;

dependent on the setting having the first value, configure the buffer memory to have a common write buffer;

dependent on the setting having the second value, configure the buffer memory to have plural write buffers, wherein the plural write buffers are respective to different ones of the groups;

for each given one of the write requests:

identify an addressed one of the namespaces;

identify a logical offset into the addressed one of the namespaces;

at least when the setting has the second value, identify a handle accompanying the one of the write requests and, from the identified handle, an addressed one of the groups;

store write data accompanying the given one of the write requests (a) in the common write buffer, when the setting has the first value, and (b) in one of the plural write buffers, selected according to the identified handle, when the setting has the second value;

identify a physical address associated with one of the storage locations;

map the logical offset to the identified physical address;

control transfer of the write data into the one of the storage locations (a) from the common write buffer, when the setting has the first value, and (b) from the one of the plural write buffers, when the setting has the second value; and

track data validity information for at least one of (1) the one of the storage locations, or (2) the logical offset for the addressed one of the groups;

wherein said logic comprises at least one of circuitry of the storage device or instructional logic, stored on at least one physical storage medium, which, when executed, is to control the operation of circuitry of the storage device.

2 . The storage device of claim 1 , wherein:

the write requests are first write requests; and

the logic is further operable to cause the storage device to:

receive, via the host interface, a second write request, the second write request being directed to a given one of the groups;

detect that insufficient free, erased memory space exists in the one or more erase units associated with the given one of the groups;

assign a new erase unit to the given one of the groups;

identify a physical address associated with a storage location in the new erase unit;

store write data accompanying the second write request in the storage location in the new erase unit; and

map a logical offset accompanying the second write request to the physical address associated with the storage location in the new erase unit.

3 . The storage device of claim 2 , wherein:

the logical offset accompanying the second write request can correspond to a logical offset for previously-written data;

the logic is further operable to cause the storage device to update the data validity information tracked for the at least one of (1) a storage location holding the previously-written data, or (2) the logical offset for the previously-written data, to mark as containing stale data the at least one of (1) a storage location holding the previously-written data, or (2) the logical offset for the previously-written data; and

the mapping of the logical offset accompanying the second write request to the physical address associated with the new erase unit is performed such that the mapping of the logical offset for the previously-written data is changed to identify the physical address for the storage location in the new erase unit instead of the physical address for the storage location holding the previously-written data.

4 . The storage device of claim 1 , wherein:

the write requests are first write requests;

the host interface is operable to receive a second write request, wherein the second write requests specifies a logical offset corresponding to previously-written data, and is accompanied by new write data; and

the logic is further operable to cause the storage device to:

update the data validity information tracked for the at least one of (1) a storage location holding the previously-written data, or (2) the logical offset for the previously-written data, to mark as containing stale data the at least one of (1) a storage location holding the previously-written data, or (2) the logical offset for the previously-written data;

store the new write data (a) in the common write buffer, when the setting has the first value, and (b) in one of the plural write buffers, selected, when the setting has the second value, according to a handle accompanying the second write request;

control transfer of the new write data from the buffer memory into a new one of the storage locations; and

remap the logical offset corresponding to the previously written data, from the storage location holding the previously-written data, to a new one of the storage locations in the flash memory.

5 . The storage device of claim 4 , wherein:

the storage location holding the previously-written data is in an erase unit which is already associated with a given one of the groups;

the new one of the storage locations in the flash memory is in a new erase unit, which was not previously associated with the given one of the groups; and

the logic is further operable to cause the storage device to assign the new erase unit to the given one of the groups, wherein further the new erase unit is not associated with any other one of the groups while it is assigned to the given one of the groups.

6 . The storage device of claim 1 , wherein the logic is further operable to cause the storage device to:

track metadata respective to different ones of the groups;

compare the metadata for a given one of the groups to at least one criterion; and

responsive to satisfaction of the at least one criterion by the metadata for the given one of the groups, automatically copy valid data from a specific erase unit in the given one of the groups to a new erase unit.

7 . The storage device of claim 6 , wherein:

the metadata comprises aggregate data validity information, tracked for a specific erase unit associated with the given one of the groups; and

responsive to satisfaction, by the aggregate data validity information, of the at least one criterion, the automatic copy comprises a copy of all remaining valid data from the specific erase unit to the new erase unit.

8 . The storage device of claim 7 , wherein the logic is further operable to cause the storage device to:

in association with the copy of all remaining valid data from the specific erase unit, disassociate the specific erase unit from the given one of the groups; and

automatically control physical erasure of the specific erase unit.

9 . The storage device of claim 8 , wherein the logic is further operable to cause the storage device to:

track information representing defect status of one or more of the erase blocks of flash memory;

in association with the automatically-controlled physical erasure of the specific erase unit, detect an erasure error; and

responsively update the tracked information representing defect status to mark the specific erase unit as bad.

10 . The storage device of claim 6 , wherein the metadata represents a time since data was programmed.

11 . The storage device of claim 6 , wherein the metadata indicates wear of a respective erase unit.

12 . The storage device of claim 11 , wherein the logic is further operable to cause the storage drive to:

maintain a pool of free erase units; and

assign an erase unit from the pool of free erase units to the given one of the groups as the new erase unit dependent on the metadata.

13 . The storage device of claim 6 , wherein the metadata indicates a data access frequency of a respective erase unit.

14 . The storage device of claim 1 , wherein the logic is further operable to cause the storage device to:

receive, via the host interface, a trim command from a host device, wherein the trim command specifies the release of at least one address, in a given one of the groups, corresponding to tracked data validity information for at least one of (1) a storage location holding the previously-written data, or (2) a logical offset corresponding to the previously-written data; and

update the tracked data validity information, to mark as released the tracked data validity information for the at least one of (1) the storage location holding the previously-written data, or (2) the logical offset corresponding to the previously-written data.

15 . The storage device of claim 14 , wherein the logic is further operable to cause the storage device to:

in association with the update of the tracked data validity information, detect a condition where all storage locations of a specific erase unit are at least one of (a) released, or (b) contain no valid data; and

automatically control physical erasure of the specific erase unit.

16 . The storage device of claim 1 , wherein the logic is further operable to cause the storage device to:

track metadata respective to different ones of the groups;

receive, via the host interface, a query command from a host device; and

responsive to the query command, transmit information, to the host device, via the host interface, which is dependent on the tracked metadata.

17 . The storage device of claim 16 , wherein the information transmitted to the host device indicates a quantity of erased, available space associated with the one or more erase units which are associated with an identified one of the groups and which can currently be written to.

18 . The storage device of claim 16 , wherein the metadata represents a time since data was programmed.

19 . The storage device of claim 1 , wherein the logic is further operable to cause the storage device to:

store a value representing a maximum number of the plural write buffers; and

associate respective handles with respective ones of the plural write buffers, each handle which is identified from the write requests corresponding to one of the respective handles.

20 . The storage device of claim 19 , wherein the logic is further operable to cause the storage device to:

receive, via the host interface, a query command; and

responsively transmit to the host, via the host interface, information representing at least one of:

(a) the stored value representing the maximum number of the plural write buffers; or

(b) one or more of the respective handles.

21 . The storage device of claim 1 , wherein:

the flash memory comprises dies;

the flash memory further comprises one or more die groups, each die group having a subset of one or more of the dies, the one or more of the dies in each die group being mutually-exclusive to the one or more of the dies in each other die group, wherein each die group is associated with an identifier (ID); and

the logic is further operable to cause the storage device to receive, via the host interface, a query command from a host device, and to responsively transmit to the host device, via the host interface, information representing each ID associated with the one or more die groups.

22 . The storage device of claim 21 , wherein each of the write requests is accompanied by an ID, associated with a given die group of the one or more die groups, and wherein the logic is further operable to cause the storage device to transfer, from the buffer memory, write data to a die in the subset of one or more dies which is associated with the given die group.

23 . The storage device of claim 21 , wherein the logic is further operable to cause the storage device to, for each particular one of the write requests which is directed to a particular die group of the or more die groups:

perform a division operation on information provided with the particular one of the write requests; and

derive, from at least one of a quotient or a remainder of the division operation, the ID of the particular die group.

24 . The storage device of claim 1 , wherein the logic is further operable to cause the storage device to, for each particular one of the write requests which is directed to a specific one of the groups, at least when the setting has the second value, perform a division operation on information received with the particular one of the write requests, to derive, from the division operation, a handle corresponding to the specific one of the groups.

25 . The storage device of claim 1 , wherein the storage device further comprises circuitry to detect a power loss event, and wherein the logic is further operable to cause the storage device to, in response to detection of the power loss event, automatically and unsolicitedly, copy write data from the buffer memory to one or more storage locations in the flash memory.

26 . The storage device of claim 25 , wherein the storage device further comprises at least one energy storage component, and wherein the logic is further operable to cause the storage device to configure, dependent on an energy storage capacity of the at least one energy storage component, (a) a size of the common write buffer, when the setting has the first value, and (b) when the setting has the second value, at least one of (b1) a size each write buffer of the plural write buffers or (b2) a number of the plural write buffers.

27 . The storage device of claim 1 , wherein the host interface is operable to receive at least one query command from a host device, and wherein the logic is further operable to cause the storage device to, in response to the at least one query command, transmit to the host device information identifying a data storage capacity associated with each of the groups.

28 . The storage device of claim 1 , wherein the erase units of the flash memory each comprise pages, the pages each having a page size, and wherein a size of (a) the common write buffer, when the setting has the first value, and (b) each write buffer, of the plural write buffers, when the setting has the second value, are each dependent upon the page size.

29 . The storage device of claim 1 , wherein the logic is further operable to cause the storage device to receive a maintenance command directed to a given one of the groups, and to responsively control physical erasure of each erase unit which is associated with the given one of the groups.

30 . The storage device of claim 1 , wherein the flash memory further comprises planes, and wherein at least one of the groups comprises erase units respective to the planes.

31 . The storage device of claim 1 , wherein the logic is further operable to cause the storage device to detect a failure to erase a specific erase unit of a given one of one of the groups, and to responsively mark the specific erase unit as bad.

32 . The storage device of claim 1 , wherein:

the host interface is also operable to receive a read request from a host device, the read request being directed to data held at a storage location associated with a source erase unit associated with a particular one of the groups; and

the logic is further operable to cause the storage device to:

detect an error condition associated with reading of data;

responsively copy valid data from the source erase unit to a new erase unit; and

associate the particular one of the groups with the new erase unit.

33 . The storage device of claim 32 , wherein the error condition corresponds to a bit error rate which exceeds a threshold.

34 . The storage device of claim 1 , wherein:

the host interface is also operable to receive read requests from a host device, the read requests each respectively accompanied by a read address;

the logic is further operable to cause the storage device to:

maintain an address translation table;

for a given one of the read requests, retrieve, from the address translation table, a physical address which is mapped to the respective, accompanying read address; and

retrieve, from the flash memory, read data which is sought by the given one of the read requests, and responsively transmit, via the host interface, the read data to the host device.

35 . The storage device of claim 1 , wherein the logic is further operable to cause the storage device to track a next-available physical storage location for each of the groups, and to automatically update, in association with each one of the write requests, the next-available physical storage location for the addressed one of the groups.

36 . The storage device of claim 1 , wherein, at least when the setting has the second value, the logic is further operable to cause the storage device to track a next-available physical storage location for each of the plural write buffers, and to automatically update, in association with each one of the write requests, the next-available physical storage location of one of the plural write buffers corresponding to the addressed one of the groups.

37 . The storage device of claim 1 , wherein the logic is further operable to cause the storage device to:

track a next-available physical storage location which is respective to a given one of the groups;

for a new write request which is directed to the given one of the groups, perform a division operation on information provided with the write request, wherein a quotient of the division operation comprises at least one of a number of the erase units, or a number of pages, or a number of storage locations, and wherein a remainder of the division operation corresponds to a structural offset corresponding to a physical address in the flash memory.

38 . The storage device of claim 1 , wherein a size of at least one of the groups corresponds to a minimum amount of storage capacity to be physically reset by the storage device as part of a physical memory erasure operation.

39 . The storage device of claim 1 , wherein:

the logic is further operable to cause the storage device to:

perform garbage collection; and

in connection with said garbage collection, for each given one of the groups:

relocate all remaining valid data from any erase unit in the given one of the groups to one or more new erase units; and

automatically associate the given one of the groups with the one or more new erase units; and

each of the erase units of flash memory, including the one or more new erase units, are associated with at most exactly one of the groups.

Assignments (3)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 14, 2025
From: KUZMIN, ANDREY V.; LERCARI, ROBERT; JADON, MIKE
To: RADIAN MEMORY SYSTEMS, INC.
Reel/Frame 071932/0386 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 11, 2025
From: KUZMIN, ANDREY V.; LERCARI, ROBERT; JADON, MIKE
To: RADIAN MEMORY SYSTEMS, INC.
Reel/Frame 070822/0929 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 28, 2025
From: RADIAN MEMORY SYSTEMS, INC.
To: RADIAN MEMORY SYSTEMS, LLC
Reel/Frame 070371/0962 →
Continuity (4)
Continuation 18625096 · Apr 2, 2024
Continuation 18097024 · Jan 13, 2023
Continuation 17313926 · May 6, 2021
Provisional Application 63020661 · May 6, 2020
References Cited (102)
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 7409489B2 · Sinclair · 2008 [cited by applicant]
US 7739444B2 · Sinclair · 2010 [cited by applicant]
US 7814262B2 · Sinclair · 2010 [cited by applicant]
US 7934074B2 · Lee · 2011 [cited by applicant]
US 7984233B2 · Sindair · 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 8301861B2 · Reiter · 2012 [cited by applicant]
US 8386700B2 · Olbrich et al. · 2013 [cited by applicant]
US 8423710B1 · Gole · 2013 [cited by applicant]
US 8495280B2 · Kang · 2013 [cited by applicant]
US 8668894B2 · Liu et al. · 2014 [cited by applicant]
US 8700961B2 · Lassa · 2014 [cited by applicant]
US 8821137B2 · Tetzlaff · 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 9239781B2 · Jones · 2016 [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 9891858B1 · Colgrove · 2018 [cited by applicant]
US 10067866B2 · Sutardja · 2018 [cited by applicant]
US 10275176B1 · Gold · 2019 [cited by applicant]
US 10853243B2 · Davis · 2020 [cited by applicant]
US 11033076B2 · Greene · 2021 [cited by applicant]
US 11068408B2 · Kim · 2021 [cited by applicant]
US 11074016B2 · Seppanen · 2021 [cited by applicant]
US 11075984B1 · Mercier · 2021 [cited by applicant]
US 11301421B2 · Petters · 2022 [cited by examiner]
US 11403019B2 · Nagle · 2022 [cited by applicant]
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 11663097B2 · McAuliffe · 2023 [cited by applicant]
US 11714718B2 · Sapuntzakis · 2023 [cited by applicant]
US 12271633B2 · Lercari · 2025 [cited by applicant]
US 20050144367A1 · Sindair · 2005 [cited by applicant]
US 20080189485A1 · Jung · 2008 [cited by applicant]
US 20080195833A1 · Park · 2008 [cited by applicant]
US 20080307192A1 · Sinclair · 2008 [cited by applicant]
US 20090089482A1 · Traister · 2009 [cited by applicant]
US 20090271562A1 · Sinclair · 2009 [cited by applicant]
US 20100049908A1 · Gonzalez · 2010 [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 20110153911A1 · Sprouse · 2011 [cited by applicant]
US 20110238890A1 · Sukegawa · 2011 [cited by applicant]
US 20110271032A1 · Yamada · 2011 [cited by applicant]
US 20110302477A1 · Goss · 2011 [cited by applicant]
US 20120072807A1 · Cornwell · 2012 [cited by applicant]
US 20120096217A1 · Son · 2012 [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 20120284587A1 · Yu · 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]
JP 2008176606 · 2008 [cited by applicant]
WO WO2008082996 · 2008 [cited by applicant]
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]