IP Library Granted Patent US 12,292,792
Granted Patent B1
US 12,292,792 · App. 18/199,456 · Granted May 6, 2025

Erasure coding techniques for flash memory

Inventors: Robert Lercari (Thousand Oaks, CA); Craig Robertson (Simi Valley, CA); Mike Jadon (Manhattan Beach, CA)
Assignee: Radian Memory Systems, LLC
G06F11/1068G06F9/30029G06F11/0772G06F11/0784G06F11/3037
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,292,792
App. No.
18/199,456
Granted
May 6, 2025
Kind
B1
Abstract

This disclosure provides a memory controller for asymmetric non-volatile memory, such as flash memory, and related host and memory system architectures. The memory controller is configured to automatically generate and transmit redundancy information to a destination, e.g., a host or another memory drive, to provide for cross-drive redundancy. This redundancy information can be error correction (EC) information, which is linearly combined with similar information from other drives to create “superparity.” If EC information is lost for one drive, it can be rebuilt by retrieving the superparity, retrieving or newly generating EC information for uncompromised drives, and linearly combining these values. In one embodiment, multiple error correction schemes are used, including a first intra-drive scheme to permit recovery of up to x structure-based failures, and the just-described redundancy scheme, to provide enhanced security for greater than x structure-based failures.

Claims (55)

1. A storage system comprising:

a host system, having at least one processor; and

one or more storage drives;

wherein:

a given one of the storage drives comprises a memory controller, channels, and, on each of the channels, flash memory dies;

the host system is configured to send a discovery command to the memory controller, and the memory controller is configured to responsively report, to the host system, a number of the channels and a number of the flash memory dies;

the host system is configured to use the reported number of channels and the reported number of flash memory dies to select a number of the channels that are to be associated with a virtual memory unit, and a number of the flash memory dies that are to be associated with the virtual unit, and to send the host-selected numbers to the given one of the storage drives;

the host system is configured to send write requests addressed to the virtual storage unit, with write data;

the memory controller is configured to service each of the write requests by identifying a subset of the flash memory dies which correspond to the host-selected numbers, and by issuing commands to the subset of the flash memory dies to store the write data; and

the memory controller is configured to calculate error correction information for the write data according to a computation formula that varies according to at least one of the host-selected numbers.

2. The storage system of claim 1 wherein:

the virtual memory unit is a first virtual memory unit, the host-selected numbers are first numbers, the write requests are first write requests, and the subset is a first subset;

the host system is configured to use the reported number of channels and the reported number of flash memory dies to select a second number of the channels that are to be associated with a second virtual memory unit, and a second number of the flash memory dies that are to be associated with the second virtual memory unit, and to send the second host-selected numbers specific to the second virtual memory unit to the given one of the storage drives;

the host system is configured to send second write requests addressed to the second virtual storage unit, with second write data;

the memory controller is configured to service each of the second write requests by identifying a second subset of the flash memory dies which correspond to the second host-selected numbers, and by issuing commands to the second subset of the flash memory dies to store the second write data; and

the memory controller is configured to calculate error correction information for the second write data according to a computation formula that varies according to at least one of the second host-selected numbers.

3. The storage system of claim 2 wherein the flash memory dies in the first subset and the flash memory dies in the second subset are mutually-exclusive to one another.

4. The storage system of claim 2 wherein the first host-selected numbers can be chosen by the host to be selectively different than the second host-selected numbers.

5. The storage system of claim 2 wherein the memory controller is further configured to perform at least one of wear leveling and garbage collection on an independent basis for each of the first virtual memory unit and the second virtual memory unit.

6. The storage system of claim 5 wherein a stored setting corresponding to the at least one of wear leveling and garbage collection causes a trigger for the at least one of wear leveling or garbage collection to be selectively different for the first virtual memory unit than for the second virtual memory unit, as a function of the stored setting.

7. The storage system of claim 2 wherein:

the host system is configured to issue read requests to the given one of the storage drives, to read the write data;

the memory controller comprises translation circuitry which is configured to translate read addresses provided with the read requests into corresponding memory addresses; and

the way in which read addresses are mapped to corresponding memory address differs for the first virtual memory unit than for the second virtual memory unit in a least one of a number of the sequential read addresses of data before a plane designation is changed in the corresponding memory addresses, a number of sequential read addresses before a channel designation is changed in the corresponding memory addresses, a number of sequential read addresses before a die designation is changed in the corresponding memory addresses, a number of sequential read addresses before an erase unit designation is changed in the corresponding memory addresses, and a number of sequential read addresses before a page designation is changed in the corresponding memory addresses.

8. The storage system of claim 2 wherein:

the memory controller comprises address generation circuitry which is configured to generate memory addresses in fulfillment of the write requests; and

the manner in which the memory addresses are generated differs for the first virtual memory unit than for the second virtual memory unit in a least one of a number of the sequential writes of data before a plane designation is changed in the corresponding memory addresses, a number of sequential writes of data before a channel designation is changed in the corresponding memory addresses, a number of sequential writes of data before a die designation is changed in the corresponding memory addresses, a number of sequential writes of data before an erase unit designation is changed in the corresponding memory addresses, and a number of sequential writes of data before a page designation is changed in the corresponding memory addresses.

9. The storage system of claim 1 wherein:

the host system is configured to issue read requests to the given one of the storage drives, to read the write data;

the memory controller comprises translation circuitry which is configured to translate read addresses provided with the read requests into corresponding physical memory addresses; and

the translation circuitry is configured to subdivide the read addresses into first and second address portions, is configured to identify the virtual memory unit from the first address portion, and is configured to identify an offset address to serve as an operand for read commands issued by the memory controllers to the subset of flash memory dies from the second address portion.

10. The storage system of claim 9 wherein the first and second address portions comprise respective, non-overlapping bit fields of the read addresses.

11. The storage system of claim 9 wherein the translation circuitry is configured to identify a specific address translation table dedicated to the virtual memory unit according to the first address portion and is configured to obtain the corresponding physical memory addresses from the specific address translation table.

12. The storage system of claim 1 wherein the memory controller comprises memory address generation circuitry, wherein the flash memory dies in the subset comprise planes, erase units and pages, and wherein the memory address generation circuitry is configured to receive a host-specified setting for the virtual memory unit, the host-specified setting comprising at least one of a number of the sequential writes of data before a generated plane address is to be changed, a number of sequential writes before a generated channel address is to be changed, a number of sequential writes of data before a generated die address is to be changed, a number of sequential writes of data before a generated erase unit address is to be changed, and a number of sequential writes of data before a generated page address is to be changed.

13. The storage system of claim 1 wherein the virtual memory unit is associated with two or more subdivisions, wherein the memory controller is configured to store information representing the two or more subdivisions, and wherein the memory controller is configured to transmit, to the one host system, information, representing the two or more subdivisions.

14. The storage system of claim 13 wherein the host system is configured to transmit a query to the given one of the storage drives and wherein the memory controller is configured to responsively:

identify a specific one of the two or more subdivisions; and

transmit to the at least one host processor an identifier for the specific one of the two or more subdivisions.

15. The storage system of claim 14 wherein the host system is configured to transmit to the given one of the storage drives, in dependence on the identifier, a write request in a manner, directed to the specific one of the two or more subdivisions.

16. The storage system of claim 13 wherein:

the flash memory dies comprise physical erase units;

the memory controller is configured to associate each of the two or more subdivisions with a respective set of one or more of the physical erase units; and

the information transmitted to the host system representing the two or more subdivisions comprises information representing at least one of a number of the two or more subdivisions and a size of each of the two or more subdivisions.

17. The storage system of claim 16 wherein information representing at least one of a number of the two or more subdivisions and a size of each of the two or more subdivisions information comprises information representing a capacity of each of the two or more subdivisions, wherein the capacity of each of two or more subdivisions is capable of being a non-power-of-two number of logical block addresses.

18. The storage system of claim 16 wherein the host system is further configured to transmit a maintenance command to the given one of the storage drives, in a manner addressed to a specific one of the two or more subdivisions, and wherein the memory controller is configured to responsively control the erasure of at least one erase unit in the respective set associated with the specific one of the two or more subdivisions.

19. The storage system of claim 16 wherein at least one of the flash memory dies comprises planes, and wherein the respective set associated with specific one of the two or more subdivisions comprises two or more erase units, wherein the two or more of the erase units are associated with different ones of the planes.

20. The storage system of claim 13 wherein the memory controller is further configured to track metadata specific to each of the two or more subdivisions.

21. The storage system of claim 20 wherein the host system is configured to query the given one of the storage drives for information dependent on the stored metadata, and wherein the memory controller is responsively configured to transmit, to the host system, information dependent on the metadata.

22. The storage system of claim 21 wherein the information transmitted to the host system dependent on the metadata indicates an extent to which the respective set associated with the specific one of the two or more subdivisions can continue to receive writes.

23. The storage system of claim 1 wherein the subset of the channels and the flash memory dies which is mapped to the virtual memory unit is selected by the memory controller of the given one of the drives, so as to correspond to the host-selected numbers.

24. The storage system of claim 1 wherein the computation formula varies according to the host-selected number of the channels.

25. The storage system of claim 1 wherein the computation formula varies according to the host-selected number of the flash memory dies.

26. The storage system of claim 1 wherein the memory controller is configured to store the error correction information in the given one of the storage drives in association with the virtual memory unit.

27. The storage system of claim 1 wherein the memory controller of the given one of the drives is configured to directly transmit the error correction information from the given one of the storage drives to another one of the storage drives, without transmitting the error correction information to the host system, and wherein the other one of the storage drives is configured to store error correction information dependent on the error correction information received from the memory controller without transmitting the error correction information to the host system.

28. The storage system of claim 1 wherein the memory controller is configured to transmit the error correction information from the given one of the storage drives to the host system, and wherein the host system is configured to responsively store error correction data in a host-selected storage location in one of the one or more storage drives, the error correction data being dependent on the error correction information received from the memory controller.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 20, 2024
From: RADIAN MEMORY SYSTEMS, INC.
To: RADIAN MEMORY SYSTEMS LLC
Reel/Frame 067471/0240 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 19, 2023
From: LERCARI, ROBERT; ROBERTSON, CRAIG; JADON, MIKE
To: RADIAN MEMORY SYSTEMS, INC.
Reel/Frame 063708/0329 →
Continuity (2)
Continuation 17498629 · Oct 11, 2021
Continuation 16707934 · Dec 9, 2019
References Cited (394)
US 4532590A · Wallach · 1985 [cited by applicant]
US 4813002A · Joyce · 1989 [cited by applicant]
US 5404485A · Ban · 1995 [cited by applicant]
US 5568423A · Jou et al. · 1996 [cited by applicant]
US 5652857A · Shimoi et al. · 1997 [cited by applicant]
US 5668976A · Zook · 1997 [cited by applicant]
US 5860082A · Smith et al. · 1999 [cited by applicant]
US 5963977A · Gold · 1999 [cited by applicant]
US 6118724A · Higgenbottom · 2000 [cited by applicant]
US 6134631A · Jennings, III · 2000 [cited by applicant]
US 6145069A · Dye · 2000 [cited by applicant]
US 6148354A · Ban · 2000 [cited by applicant]
US 6381668B1 · Lunteren · 2002 [cited by applicant]
US 6430650B1 · Miyauchi · 2002 [cited by applicant]
US 6571312B1 · Sugai · 2003 [cited by applicant]
US 6892287B1 · Millard · 2005 [cited by applicant]
US 7096378B2 · Stence et al. · 2006 [cited by applicant]
US 7120729B2 · Gonzalez · 2006 [cited by applicant]
US 7339823B2 · Nakayama et al. · 2008 [cited by applicant]
US 7383375B2 · Sinclair · 2008 [cited by applicant]
US 7404031B2 · Oshima · 2008 [cited by applicant]
US 7406563B1 · Nagshain · 2008 [cited by applicant]
US 7519869B2 · Mizuno · 2009 [cited by applicant]
US 7552272B2 · Gonzalez · 2009 [cited by applicant]
US 7555628B2 · Bennett · 2009 [cited by applicant]
US 7581078B2 · Ware · 2009 [cited by applicant]
US 7702846B2 · Nakanishi et al. · 2010 [cited by applicant]
US 7702948B1 · Kalman · 2010 [cited by applicant]
US 7710777B1 · Mintierth · 2010 [cited by applicant]
US 7747813B2 · Danilak · 2010 [cited by applicant]
US 7752381B2 · Wong · 2010 [cited by applicant]
US 7801561B2 · Parikh et al. · 2010 [cited by applicant]
US 7809900B2 · Danilak · 2010 [cited by applicant]
US 7814262B2 · Sinclair · 2010 [cited by applicant]
US 7818489B2 · Karamcheti et al. · 2010 [cited by applicant]
US 7836244B2 · Kim et al. · 2010 [cited by applicant]
US 7861122B2 · Cornwell et al. · 2010 [cited by applicant]
US 7877540B2 · Sinclair · 2011 [cited by applicant]
US 7904619B2 · Danilak · 2011 [cited by applicant]
US 7934074B2 · Lee · 2011 [cited by applicant]
US 7941692B2 · Royer et al. · 2011 [cited by applicant]
US 7970983B2 · Nochimowski · 2011 [cited by applicant]
US 7991944B2 · Lee et al. · 2011 [cited by applicant]
US 8001318B1 · Iyer · 2011 [cited by applicant]
US 8024545B2 · Kim · 2011 [cited by applicant]
US 8046524B2 · Tringali · 2011 [cited by applicant]
US 8055833B2 · Danilak et al. · 2011 [cited by applicant]
US 8065471B2 · Yano et al. · 2011 [cited by applicant]
US 8065473B2 · Ito et al. · 2011 [cited by applicant]
US 8068365B2 · Kim · 2011 [cited by applicant]
US 8069284B2 · Oh · 2011 [cited by applicant]
US 8072463B1 · Van Dyke · 2011 [cited by applicant]
US 8074022B2 · Okin et al. · 2011 [cited by applicant]
US 8082389B2 · Fujibayashi · 2011 [cited by applicant]
US 8086790B2 · Roohparvar · 2011 [cited by applicant]
US 8099581B2 · Bennett · 2012 [cited by applicant]
US 8099632B2 · Tringali · 2012 [cited by applicant]
US 8195912B2 · Flynn · 2012 [cited by applicant]
US 8219776B2 · Forhan · 2012 [cited by applicant]
US 8285918B2 · Maheshwari · 2012 [cited by applicant]
US 8291151B2 · Sinclair · 2012 [cited by applicant]
US 8291295B2 · Harari · 2012 [cited by applicant]
US 8341339B1 · Boyle · 2012 [cited by applicant]
US 8347042B2 · You · 2013 [cited by applicant]
US 8402249B1 · Zhu · 2013 [cited by applicant]
US 8423710B1 · Gole · 2013 [cited by applicant]
US 8495280B2 · Kang · 2013 [cited by applicant]
US 8539197B1 · Marshall · 2013 [cited by applicant]
US 8572331B2 · Shalvi · 2013 [cited by applicant]
US 8601202B1 · Melcher · 2013 [cited by applicant]
US 8645634B1 · Cox et al. · 2014 [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 9063844B2 · Higgins · 2015 [cited by applicant]
US 9123443B2 · Chung · 2015 [cited by applicant]
US 9176864B2 · Gorobets · 2015 [cited by applicant]
US 9229854B1 · Kuzmin et al. · 2016 [cited by applicant]
US 9286198B2 · Bennett · 2016 [cited by applicant]
US 9329986B2 · Li · 2016 [cited by applicant]
US 9335939B2 · Bennett et al. · 2016 [cited by applicant]
US 9348749B2 · Choi · 2016 [cited by applicant]
US 9378149B1 · Bonwick · 2016 [cited by applicant]
US 9400749B1 · Kuzmin et al. · 2016 [cited by applicant]
US 9405621B2 · Yu · 2016 [cited by applicant]
US 9519578B1 · Kuzmin et al. · 2016 [cited by applicant]
US 9542118B1 · Lercari et al. · 2017 [cited by applicant]
US 9565269B2 · Malwankar · 2017 [cited by applicant]
US 9575672B2 · Yamamoto · 2017 [cited by applicant]
US 9588904B1 · Ercari et al. · 2017 [cited by applicant]
US 9652376B2 · Kuzmin et al. · 2017 [cited by applicant]
US 9696917B1 · Sareena et al. · 2017 [cited by applicant]
US 9710377B1 · Kuzmin et al. · 2017 [cited by applicant]
US 9727454B2 · Kuzmin et al. · 2017 [cited by applicant]
US 9734086B2 · Flynn · 2017 [cited by applicant]
US 9785572B1 · Lercari et al. · 2017 [cited by applicant]
US 9846541B2 · Miyamoto et al. · 2017 [cited by applicant]
US 9858008B2 · Liu · 2018 [cited by applicant]
US 10067866B2 · Sutardja · 2018 [cited by applicant]
US 10445229B1 · Kuzmin et al. · 2019 [cited by applicant]
US 10552058B1 · Jadon et al. · 2020 [cited by applicant]
US 10552085B1 · Chen et al. · 2020 [cited by applicant]
US 10642505B1 · Kuzmin · 2020 [cited by applicant]
US 10642748B1 · Lercari · 2020 [cited by applicant]
US 10838853B1 · Kuzmin · 2020 [cited by applicant]
US 10884915B1 · Kuzmin · 2021 [cited by applicant]
US 10915458B1 · Lercari · 2021 [cited by applicant]
US 10956082B1 · Kuzmin · 2021 [cited by applicant]
US 10977188B1 · Lercari · 2021 [cited by applicant]
US 10983907B1 · Kuzmin · 2021 [cited by applicant]
US 10996863B1 · Kuzmin · 2021 [cited by applicant]
US 11003586B1 · Lercari · 2021 [cited by applicant]
US 11023315B1 · Jadon · 2021 [cited by applicant]
US 11023386B1 · Lercari · 2021 [cited by applicant]
US 11023387B1 · Lercari · 2021 [cited by applicant]
US 11048643B1 · Lercari · 2021 [cited by applicant]
US 11068408B2 · Kim · 2021 [cited by applicant]
US 11074175B1 · Kuzmin · 2021 [cited by applicant]
US 11075984B1 · Mercier · 2021 [cited by applicant]
US 11080181B1 · Kuzmin · 2021 [cited by applicant]
US 11086789B1 · Lercari · 2021 [cited by applicant]
US 11100006B1 · Lercari · 2021 [cited by applicant]
US 11175984B1 · Ercari · 2021 [cited by applicant]
US 11188457B1 · Kuzmin · 2021 [cited by applicant]
US 11216365B1 · Kuzmin · 2022 [cited by applicant]
US 11221959B1 · Lercari · 2022 [cited by applicant]
US 11221960B1 · Lercari · 2022 [cited by applicant]
US 11221961B1 · Lercari · 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 20030028733A1 · Tsunoda et al. · 2003 [cited by applicant]
US 20030037071A1 · Harris · 2003 [cited by applicant]
US 20030065866A1 · Spencer · 2003 [cited by applicant]
US 20030188032A1 · Solomon · 2003 [cited by applicant]
US 20040083335A1 · Gonzalez · 2004 [cited by applicant]
US 20050073844A1 · Gonzalez · 2005 [cited by applicant]
US 20050073884A1 · Gonzalez · 2005 [cited by applicant]
US 20050144413A1 · Kuo et al. · 2005 [cited by applicant]
US 20060004957A1 · Hand, III · 2006 [cited by applicant]
US 20060022171A1 · Maeda et al. · 2006 [cited by applicant]
US 20070019481A1 · Park · 2007 [cited by applicant]
US 20070046681A1 · Nagashima · 2007 [cited by applicant]
US 20070058431A1 · Chung et al. · 2007 [cited by applicant]
US 20070091497A1 · Mizuno · 2007 [cited by applicant]
US 20070143569A1 · Sanders · 2007 [cited by applicant]
US 20070168321A1 · Saito · 2007 [cited by applicant]
US 20070233939A1 · Kim · 2007 [cited by applicant]
US 20070260811A1 · Merry, Jr. et al. · 2007 [cited by applicant]
US 20070260841A1 · Hampel · 2007 [cited by applicant]
US 20070283428A1 · Ma et al. · 2007 [cited by applicant]
US 20080005502A1 · Kanai · 2008 [cited by applicant]
US 20080034153A1 · Lee · 2008 [cited by applicant]
US 20080082596A1 · Gorobets · 2008 [cited by applicant]
US 20080126720A1 · Danilak · 2008 [cited by applicant]
US 20080126724A1 · Danilak · 2008 [cited by applicant]
US 20080147964A1 · Chow et al. · 2008 [cited by applicant]
US 20080155204A1 · Qawami et al. · 2008 [cited by applicant]
US 20080189485A1 · Jung et al. · 2008 [cited by applicant]
US 20080195833A1 · Park · 2008 [cited by applicant]
US 20080201517A1 · Kuhne · 2008 [cited by applicant]
US 20080209114A1 · Chow · 2008 [cited by applicant]
US 20080307192A1 · Sinclair · 2008 [cited by applicant]
US 20080320476A1 · Wingard · 2008 [cited by applicant]
US 20090036163A1 · Kimbrell · 2009 [cited by applicant]
US 20090044190A1 · Tringali · 2009 [cited by applicant]
US 20090046533A1 · Jo · 2009 [cited by applicant]
US 20090083478A1 · Kunimatsu · 2009 [cited by applicant]
US 20090089482A1 · Traister · 2009 [cited by applicant]
US 20090089490A1 · Ozawa et al. · 2009 [cited by applicant]
US 20090119529A1 · Kono · 2009 [cited by applicant]
US 20090138671A1 · Danilak · 2009 [cited by applicant]
US 20090172219A1 · Mardiks · 2009 [cited by applicant]
US 20090172246A1 · Afriat · 2009 [cited by applicant]
US 20090172250A1 · Allen et al. · 2009 [cited by applicant]
US 20090172257A1 · Prins et al. · 2009 [cited by applicant]
US 20090172499A1 · Olbrich · 2009 [cited by examiner]
US 20090182964A1 · Greiner · 2009 [cited by applicant]
US 20090198946A1 · Ebata · 2009 [cited by applicant]
US 20090210616A1 · Karamcheti · 2009 [cited by applicant]
US 20090210636A1 · Karamcheti · 2009 [cited by applicant]
US 20090240903A1 · Sauber · 2009 [cited by applicant]
US 20090254689A1 · Karamcheti · 2009 [cited by applicant]
US 20090254705A1 · Abali et al. · 2009 [cited by applicant]
US 20090271562A1 · Sinclair · 2009 [cited by applicant]
US 20090292839A1 · Oh · 2009 [cited by applicant]
US 20090300015A1 · Kazan et al. · 2009 [cited by applicant]
US 20090327602A1 · Moore et al. · 2009 [cited by applicant]
US 20100011085A1 · Taguchi · 2010 [cited by applicant]
US 20100011186A1 · Bennett · 2010 [cited by applicant]
US 20100191779A1 · Hinrichs · 2010 [cited by applicant]
US 20100030946A1 · Kano · 2010 [cited by applicant]
US 20100042655A1 · Tse et al. · 2010 [cited by applicant]
US 20100077136A1 · Ware · 2010 [cited by applicant]
US 20100083050A1 · Ohyama · 2010 [cited by applicant]
US 20100106734A1 · Calder · 2010 [cited by applicant]
US 20100115172A1 · Gillingham et al. · 2010 [cited by applicant]
US 20100125702A1 · Lee · 2010 [cited by applicant]
US 20100161882A1 · Stern et al. · 2010 [cited by applicant]
US 20100162012A1 · Cornwell et al. · 2010 [cited by applicant]
US 20100182838A1 · Kim et al. · 2010 [cited by applicant]
US 20100199065A1 · Kaneda · 2010 [cited by applicant]
US 20100211737A1 · Flynn · 2010 [cited by applicant]
US 20100241866A1 · Rodorff · 2010 [cited by applicant]
US 20100262761A1 · Borchers et al. · 2010 [cited by applicant]
US 20100262762A1 · Borchers · 2010 [cited by applicant]
US 20100262765A1 · Cheon · 2010 [cited by applicant]
US 20100262773A1 · Borchers · 2010 [cited by applicant]
US 20100281230A1 · Rabii et al. · 2010 [cited by applicant]
US 20100287217A1 · Borchers et al. · 2010 [cited by applicant]
US 20100287327A1 · Li · 2010 [cited by applicant]
US 20100287332A1 · Koshiyama · 2010 [cited by applicant]
US 20100299494A1 · Van Acht · 2010 [cited by applicant]
US 20100329011A1 · Lee et al. · 2010 [cited by applicant]
US 20110033548A1 · Kimmel et al. · 2011 [cited by applicant]
US 20110041039A1 · Harari · 2011 [cited by applicant]
US 20110055445A1 · Gee et al. · 2011 [cited by applicant]
US 20110066792A1 · Shaeffer · 2011 [cited by applicant]
US 20110125956A1 · Danilak · 2011 [cited by applicant]
US 20110138114A1 · Yen · 2011 [cited by applicant]
US 20110153911A1 · Sprouse · 2011 [cited by applicant]
US 20110153917A1 · Maita · 2011 [cited by applicant]
US 20110161784A1 · Sellinger et al. · 2011 [cited by applicant]
US 20110167199A1 · Danilak · 2011 [cited by applicant]
US 20110197014A1 · Yeh · 2011 [cited by applicant]
US 20110197023A1 · Iwamitsu et al. · 2011 [cited by applicant]
US 20110231623A1 · Goss · 2011 [cited by applicant]
US 20110238890A1 · Sukegawa · 2011 [cited by applicant]
US 20110238892A1 · Tsai · 2011 [cited by applicant]
US 20110238943A1 · Devendran et al. · 2011 [cited by applicant]
US 20110264843A1 · Haines · 2011 [cited by applicant]
US 20110276756A1 · Bish et al. · 2011 [cited by applicant]
US 20110283043A1 · Schuette · 2011 [cited by applicant]
US 20110296089A1 · Seol · 2011 [cited by applicant]
US 20110296133A1 · Flynn et al. · 2011 [cited by applicant]
US 20110314209A1 · Eckstein · 2011 [cited by applicant]
US 20120033519A1 · Confalonieri et al. · 2012 [cited by applicant]
US 20120054419A1 · Chen · 2012 [cited by applicant]
US 20120059972A1 · Chen · 2012 [cited by applicant]
US 20120066441A1 · Weingarten · 2012 [cited by applicant]
US 20120079174A1 · Nellans · 2012 [cited by applicant]
US 20120131270A1 · Hemmi · 2012 [cited by applicant]
US 20120131381A1 · Eleftheriou · 2012 [cited by applicant]
US 20120155492A1 · Abel · 2012 [cited by applicant]
US 20120159037A1 · Kwon · 2012 [cited by applicant]
US 20120159039A1 · Kegel et al. · 2012 [cited by applicant]
US 20120166911A1 · Takahashi · 2012 [cited by applicant]
US 20120191921A1 · Shaeffer · 2012 [cited by applicant]
US 20120198128A1 · Van Aken · 2012 [cited by applicant]
US 20120198129A1 · Van Aken · 2012 [cited by applicant]
US 20120204079A1 · Takefman et al. · 2012 [cited by applicant]
US 20120221776A1 · Yoshihashi · 2012 [cited by applicant]
US 20120246394A1 · Ou · 2012 [cited by applicant]
US 20120260150A1 · Cideciyan · 2012 [cited by applicant]
US 20120303875A1 · Benhase · 2012 [cited by applicant]
US 20130007343A1 · Rub · 2013 [cited by applicant]
US 20130013852A1 · Hou et al. · 2013 [cited by applicant]
US 20130019057A1 · Stephens · 2013 [cited by applicant]
US 20130019062A1 · Bennett et al. · 2013 [cited by applicant]
US 20130024460A1 · Peterson · 2013 [cited by applicant]
US 20130073793A1 · Yamagishi · 2013 [cited by applicant]
US 20130073816A1 · Seo et al. · 2013 [cited by applicant]
US 20130097236A1 · Khorashadi · 2013 [cited by applicant]
US 20130111295A1 · Li et al. · 2013 [cited by applicant]
US 20130111298A1 · Seroff · 2013 [cited by applicant]
US 20130124793A1 · Gyl et al. · 2013 [cited by applicant]
US 20130138868A1 · Seroff · 2013 [cited by applicant]
US 20130145111A1 · Murukani · 2013 [cited by applicant]
US 20130166824A1 · Shim · 2013 [cited by applicant]
US 20130166825A1 · Kim et al. · 2013 [cited by applicant]
US 20130227201A1 · Talagala · 2013 [cited by applicant]
US 20130232297A1 · Tanaka · 2013 [cited by applicant]
US 20130242425A1 · Zayas et al. · 2013 [cited by applicant]
US 20130282055A1 · Parker · 2013 [cited by applicant]
US 20130290619A1 · Knight · 2013 [cited by applicant]
US 20130297852A1 · Fai et al. · 2013 [cited by applicant]
US 20130326117A1 · Aune · 2013 [cited by applicant]
US 20130332656A1 · Kandiraju · 2013 [cited by applicant]
US 20130339580A1 · Brandt · 2013 [cited by applicant]
US 20140040550A1 · Nale · 2014 [cited by applicant]
US 20140047210A1 · Cohen · 2014 [cited by applicant]
US 20140047300A1 · Liang · 2014 [cited by applicant]
US 20140101371A1 · Nguyen et al. · 2014 [cited by applicant]
US 20140122781A1 · Smith et al. · 2014 [cited by applicant]
US 20140189207A1 · Sinclair · 2014 [cited by applicant]
US 20140189209A1 · Sinclair et al. · 2014 [cited by applicant]
US 20140195725A1 · Bennett · 2014 [cited by applicant]
US 20140208004A1 · Cohen · 2014 [cited by applicant]
US 20140208062A1 · Cohen · 2014 [cited by applicant]
US 20140215129A1 · Kuzmin et al. · 2014 [cited by applicant]
US 20140237168A1 · Prins · 2014 [cited by applicant]
US 20140297949A1 · Nagawaka · 2014 [cited by applicant]
US 20140317346A1 · Moon · 2014 [cited by applicant]
US 20150046670A1 · Kim · 2015 [cited by applicant]
US 20150067297A1 · Arroyo et al. · 2015 [cited by applicant]
US 20150113203A1 · Dancho et al. · 2015 [cited by applicant]
US 20150134930A1 · Huang et al. · 2015 [cited by applicant]
US 20150149789A1 · Seo et al. · 2015 [cited by applicant]
US 20150212938A1 · Chen et al. · 2015 [cited by applicant]
US 20150193148A1 · Miwa et al. · 2015 [cited by applicant]
US 20150261456A1 · Alcantara et al. · 2015 [cited by applicant]
US 20150263978A1 · Olson · 2015 [cited by applicant]
US 20150309734A1 · Brondjik · 2015 [cited by applicant]
US 20150324264A1 · Vidypoornachy et al. · 2015 [cited by applicant]
US 20150347041A1 · Kotte et al. · 2015 [cited by applicant]
US 20150347291A1 · Choi · 2015 [cited by examiner]
US 20150347296A1 · Kotte et al. · 2015 [cited by applicant]
US 20150355965A1 · Peddle · 2015 [cited by applicant]
US 20150363120A1 · Chen · 2015 [cited by applicant]
US 20150378613A1 · Koseki · 2015 [cited by applicant]
US 20150378886A1 · Nemazie · 2015 [cited by applicant]
US 20160011818A1 · Hashimoto · 2016 [cited by applicant]
US 20160018998A1 · Mohan et al. · 2016 [cited by applicant]
US 20160019148A1 · Vekiarides · 2016 [cited by applicant]
US 20160019159A1 · Ueda · 2016 [cited by applicant]
US 20160026564A1 · Manning · 2016 [cited by applicant]
US 20160034221A1 · Zettsu · 2016 [cited by applicant]
US 20160070496A1 · Cohen · 2016 [cited by examiner]
US 20160092116A1 · Liu · 2016 [cited by applicant]
US 20160147669A1 · Huang · 2016 [cited by applicant]
US 20160179664A1 · Camp · 2016 [cited by applicant]
US 20160202910A1 · Ravimohan · 2016 [cited by applicant]
US 20160253091A1 · Ayyavu · 2016 [cited by applicant]
US 20160342509A1 · Kotte · 2016 [cited by examiner]
US 20160357462A1 · Nam et al. · 2016 [cited by applicant]
US 20160364179A1 · Tsai et al. · 2016 [cited by applicant]
US 20170031699A1 · Banerjee et al. · 2017 [cited by applicant]
US 20170060680A1 · Halbert · 2017 [cited by applicant]
US 20170075620A1 · Yamamoto · 2017 [cited by applicant]
US 20170139838A1 · Tomlin · 2017 [cited by applicant]
US 20170220287A1 · Wei · 2017 [cited by applicant]
US 20170364445A1 · Allison · 2017 [cited by applicant]
US 20180046480A1 · Dong · 2018 [cited by applicant]
US 20180203761A1 · Halbert · 2018 [cited by applicant]
US 20180210787A1 · Bains · 2018 [cited by applicant]
US 20200117539A1 · Sun · 2020 [cited by examiner]
US 20200151055A1 · Eom · 2020 [cited by examiner]
US 20200363996A1 · Kanno · 2020 [cited by applicant]
US 20200371871A1 · Li · 2020 [cited by examiner]
US 20210064293A1 · Cho · 2021 [cited by applicant]
US 20210223994A1 · Kanno · 2021 [cited by applicant]
JP 2001051889A · 2001 [cited by applicant]
JP 2011123863A · 2011 [cited by applicant]
JP 2011203916A · 2011 [cited by applicant]
WO 2009084724A1 · 2009 [cited by applicant]
WO 2009100149A1 · 2009 [cited by applicant]
WO WO2010027983A1 · 2010 [cited by applicant]
Bjorling, “Light NVM, the Linus Open-Channel SSD Subsystem,” 15th USENIX Conference on fiel and storage technologies, Feb. 27, 2017, 17 pages. [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]
Chang et al., “An efficient FTL design for multi-chipped solid-state drives,” 2010 IEEE 16th Int'l. Conference on Embedded and Real-Time Computing Systems and Applications, 2010, pp. 237-246. [cited by applicant]
NVM Express, Version 1.0b, Jul. 12, 2011, pp. 1-126, published at http://www.nvmexpress.org/resources/ by the NVM Express Work Group. [cited by applicant]
John D. Strunk, “Hybrid Aggregates: Combining SSDs and HDDs in a single storage pool,” Dec. 15, 2012, ACM SIGOPS Operating Systems Review archive, vol. 46 Issue 3, Dec. 2012, pp. 50-56. [cited by applicant]
Yiying Zhang, Leo Prasath Arulraj, Andrea C. Arpaci-Dusseau, Remzi H. Arpaci-Dusseau, Computer Sciences Department, University of Wisconsin-Madison, “De-indirection for Flash-based SSDs with NamelessWrites,” published a… [cited by applicant]
Andrea C. Arpaci-Dusseau, Remzi H. Arpaci-Dusseau, and Vijayan Prabhakaran, “ResearchRemoving the Costs of Indirection in Flash-based SSDs with NamelessWrites,” Jun. 22, 2010, pp. 1-5, published at www.cs.wisc.edu/wind/… [cited by applicant]
Stan Park and Kai Shen, Department of Computer Science, University of Rochester, “FIOS: A Fair, Efficient Flash I/O Scheduler,” Feb. 23, 2012, pp. 1-15, published at www.usenix.org/event/fast12/tech/full_papers/Park.pdf… [cited by applicant]
Eric Seppanen, Matthew T. O'Keefe, David J. Lilja, Department of Electrical and Computer Engineering, University of Minnesota, “High Performance Solid State Storage Under Linux,” Apr. 10, 2010, MSST '10 Proceedings of t… [cited by applicant]
Xiangyong Ouyangyz, David Nellansy, Robert Wipfely, David Flynny, Dhabaleswar K. Pandaz, “Beyond Block I/O: Rethinking Traditional Storage Primitives,” Aug. 20, 2011, published at http://www.sciweavers.org/read/beyond-b… [cited by applicant]
Intel Corp, PCI-SIG SR-IOV Primer—An Introduction to SR-IOV Technology,: 321211-002, Revision 2.5, Jan. 2011, 28 pages. [cited by applicant]
Open NAND Flash Interface (ONFI), specification, version 2.0, 174 pp. Feb. 27, 2008. [cited by applicant]
Open NAND Flash Interface (ONFI), specification, version 3.1, 296 pp. Sep. 19, 2012. [cited by applicant]
NVM Express, V. 1.2.1, 217 pages, Jun. 3, 2016. [cited by applicant]
Garth Gibson, Greg Ganger, “Principles of Operation for Shingled Disk Devices,” Canregie Mellon Parallel Data Laboratory, CMU-PDL-11-107, Apr. 2011, 9 pages. [cited by applicant]
Li-Pin Chang, “Hybrid Solid State Disks: Combining Heterogeneous NAND Flash in Large SSDs,” National Chiao-Tung University, Taiwan, ASPDAC 2008, 26 pages. [cited by applicant]
Hua Wangx, Ping Huangxz, Shuang Hex, Ke Zhoux, Chunhua Lix, and Xubin He, “A Novel I/O Scheduler for SSD with Improved Performance and Lifetime,” Mass Storage Systems and Technologies (MSST), 2013 IEEE 29th Symposium on… [cited by applicant]
Altera Corp et al., “Hybrid Memory Cube” specification, 2012, 122 pages. [cited by applicant]
JEDEC Standard, JESD229, Wide IO, Dec. 2011, 74 pages. [cited by applicant]
Li-Pin Chang, “Hybrid Solid State Disks: Combining Heterogeneous NAND Flash in Large SSDs,” National Chiao-Tung University, Taiwan, 978-1-4244-1922-7/08, 2008 IEEE, 6 pages. [cited by applicant]
Optimizing NAND Flash Performance, Flash Memory Summit, Santa Clara, CA USA Aug. 2008, Ryan Fisher, pp. 1-23. [cited by applicant]
High-Speed NAND Flash: Design Considerations to Maximize Performance, Flash Memory Summit, Santa Clara, CA USA Aug. 11, 2009, , Robert Pierce, pp. 1-19. [cited by applicant]
NAND 201: An Update on the Continued Evolution of NAND Flash, Jim Cooke, Micron White Paper, Sep. 6, 2011, pp. 1-10. [cited by applicant]
Spansion SLC NAND Flash Memory for Embedded, data sheet, S34ML01G1, S34ML02G1, S34ML04G1, Sep. 6, 2012, pp. 1-73. [cited by applicant]
Wang et al., “An Efficient Design and Implementation of LSM-Tree based Key-Value Store on Open Channel SSD,” EuroSys '14 Proceedings of the Ninth European Conference on Computer Systems, Article No. 16, Apr. 14, 2014, 1… [cited by applicant]
Ouyang et al., “SDF: Software-defined flash for web-scale internet storage systems,” Computer Architecture News—ASPLOS '14, vol. 42 Issue 1, Mar. 2014, 14 pages. [cited by applicant]
Macko et al., “Tracking Back References in a Write-Anywhere File System,” FAST'10 Proceedings of the 8th USENIX conference on File and storage technologies, 14 pages, Feb. 23, 2010. [cited by applicant]
Ohad, Rodeh, “IBM Research Report Defragmentation Mechanisms for Copy-on-Write File-systems,” IBM white paper, Apr. 26, 2010, 10 pages, available at domino.watson.IBM.com/library/CyberDig.nsf/papers/298A0EF3C2CDB17B8525… [cited by applicant]
Michael Comwell, “Anatomy of a solid-state drive,” Oct. 17, 2012, pp. 1-13, https://queue.acm.org/detail.cfm?id=2385276. [cited by applicant]
RD527033 A, Mar. 10, 2008. [cited by applicant]
C. Kuo et al., “Detecting Solid-State Disk Geometry for Write Pattern Optimization,” 2011 IEEE 17th International Conference on Embedded and Real-Time Computing Systems and Applications, 2011, pp. 89-94. [cited by applicant]
S. Im and D. Shin, “Flash-aware RAID techniques for dependable and high-performance flash memory SSD,” IEEE Transactions on Computers, V. 60, No. 1, pp. 80-92, Jan. 2011. [cited by applicant]
J. Kim et al., “A methodology for extracting performance parameters in solid state disks (SSDs),” 2009 IEEE International Symposium on Modeling, Analysis & Simulation of Computer and Telecommunication Systems, 2009, pp.… [cited by applicant]
W. Lafi et al., “High level modeling and performance evaluation of address mapping in NAND flash memory,” 2009 16th IEEE International Conference on Electronics, Circuits and Systems (ICECS 2009), Yasmine Hammamet, 2009… [cited by applicant]
Tennison, RD, “Memory space mapping using virtual addressing to multiple sized memory units,” IP.com, prior art database technical disclosure, Aug. 1, 1975. [cited by applicant]
Y. Hu et al., “Achieving p. mapping FTL performance at block-mapping FTL cost by hiding address translation,” 2010 IEEE 26th Symposium on Mass Storage Systems and Technologies (MSST), Incline Village, NV, USA, May 3, 20… [cited by applicant]