IP Library Granted Patent US 12,197,776
Granted Patent B2
US 12,197,776 · App. 18/199,135 · Granted Jan 14, 2025

NAND-based storage device with partitioned nonvolatile write buffer

Inventors: Michal Wysoczanski (Koszalin, PL); Kapil Karkra (Chandler, AZ); Piotr Wysocki (Gdansk, PL); Anand S. Ramalingam (Portland, OR)
Assignee: SK hynix NAND Product Solutions Corp.
G06F3/0656G06F3/061G06F3/0644G06F3/0679G06F12/0246G06F13/38G06F2212/7201G06F2212/7204G06F2213/0062
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,197,776
App. No.
18/199,135
Granted
Jan 14, 2025
Kind
B2
Abstract

A storage system includes a NAND storage media and a nonvolatile storage media as a write buffer for the NAND storage media. The write buffer is partitioned, where the partitions are to buffer write data based on a classification of a received write request. Write requests are placed in the write buffer partition with other write requests of the same classification. The partitions have a size at least equal to the size of an erase unit of the NAND storage media. The write buffer flushes a partition once it has an amount of write data equal to the size of the erase unit.

Claims (37)

1. A method comprising:

buffering write operations of first write data in a first partition of memory based on a first expected frequency of modification of the first write data;

buffering write operations of second write data in a second partition of the memory based on a second expected frequency of modification of the second write data, wherein the second expected frequency is different from the first expected frequency; and

performing a first flush of the first partition to storage media and performing a separate second flush of the second partition to the storage media,

wherein flushing the first partition to the storage media in response to the first partition storing write operations having a size reaching a first threshold, and

wherein flushing the second partition to the storage media is in response to the second partition storing write operations having a size reaching a second threshold.

2. The method of claim 1 , further comprising receiving an indication of a classification of data associated with a received write access operation from a host.

3. The method of claim 1 , further comprising receiving an indication of a type of data for a received write access operation from a host, and determining a classification of the data based on the type of data.

4. The method of claim 1 , further comprising determining if data associated with a received write access operation is stored in one of the first partition and the second partition, and overwriting the data in place prior to flushing to the storage media the one of the first partition and the second partition containing the data.

5. The method of claim 1 , further comprising controlling the first flush, which controlling includes throttling the first flushing to a bandwidth lower than an available write bandwidth for the storage media.

6. The method of claim 5 , wherein the throttling the flushing throttles the flushing to a bandwidth based on an average rate of receipt of write access requests.

7. The method of claim 1 , further comprising providing a logic block address (LBA) map that indicates LBAs and a location of the LBAs.

8. A system comprising:

memory; and

a hardware processor coupled to the memory and configured to at least:

buffer write operations of first write data in a first partition of memory based on a first expected frequency of modification of the first write data;

buffer write operations of second write data in a second partition of the memory based on a second expected frequency of modification of the second write data, wherein the second expected frequency is different from the first expected frequency; and

perform a first flush of the first partition to storage media and perform a separate second flush of the second partition to the storage media,

wherein flushing the first partition to the storage media is in response to the first partition storing write operations having a size reaching a first threshold, and

wherien flushing the second partition to the storage media is in response to the second partition storing write operations having a size reaching a second threshold.

9. The system of claim 8 , wherein the hardware processor is also configured to at least receive an indication of a classification of data associated with a received write access operation from a host.

10. The system of claim 8 , wherein the hardware processor is also configured to at least receive an indication of a type of data for a received write access operation from a host, and determine a classification of the data based on the type of data.

11. The system of claim 8 , wherein the hardware processor is also configured to at least determine if data associated with a received write access operation is stored in one of the first partition and the second partition, and overwrite the data in place prior to flushing to the storage media the one of the first partition and the second partition containing the data.

12. The system of claim 8 , wherein the hardware processor is also configured to at least control the first flush, which controlling includes throttling the first flush to a bandwidth lower than an available write bandwidth for the storage media.

13. The system of claim 12 , wherein the throttling the first flushing throttles the first flush to a bandwidth based on an average rate of receipt of write access requests.

14. The system of claim 8 , wherein the hardware processor is also configured to at least provide a logic block address (LBA) map that indicates LBAs and a location of the LBAs.

15. A non-transitory computer-readable medium containing computer executable instructions that, when executed by a processor, cause the processor to perform a method of buffering write data, the method comprising:

buffering write operations of first write data in a first partition of memory based on a first expected frequency of modification of the first write data;

buffering write operations of second write data in a second partition of the memory based on a second expected frequency of modification of the second write data, wherein the second expected frequency is different from the first expected frequency; and

performing a first flush of the first partition to storage media and performing a separate second flush of the second partition to the storage media,

wherein flushing the first partition to the storage media is in response to the first partition storing write operations having a size reaching a first threshold, and

wherein flushing the second partition to the storage media is in response to the second partition storing write operations having a size reaching a second threshold.

16. The non-transitory computer-readable medium of claim 15 , wherein the method further comprises receiving an indication of a classification of data associated with a received write access operation from a host.

17. The non-transitory computer-readable medium of claim 15 , wherein the method further comprises receiving an indication of a type of data for a received write access operation from a host, and determining a classification of the data based on the type of data.

18. The non-transitory computer-readable medium of claim 15 , wherein the method further comprises determining if data associated with a received write access operation is stored in one of the first partition and the second partition, and overwriting the data in place prior to flushing to the storage media the one of the first partition and the second partition containing the data.

19. The non-transitory computer-readable medium of claim 15 , wherein the method further comprises controlling the first flush, which controlling includes throttling the first flush to a bandwidth lower than an available write bandwidth for the storage media.

20. The non-transitory computer-readable medium of claim 19 , wherein the throttling the first flush throttles the first flush to a bandwidth based on an average rate of receipt of write access requests.

Continuity (2)
Continuation 16054983 · Aug 3, 2018
Related Publication 20230297271A1 · Sep 21, 2023
References Cited (50)
US 5388222A · Chisvin · 1995 [cited by examiner]
US 6222762B1 · Guterman et al. · 2001 [cited by applicant]
US 7562189B2 · Hamilton · 2009 [cited by examiner]
US 8244960B2 · Paley · 2012 [cited by examiner]
US 9232651B2 · Ware et al. · 2016 [cited by applicant]
US 9317427B2 · DeSota et al. · 2016 [cited by applicant]
US 20040081005A1 · Garrett et al. · 2004 [cited by applicant]
US 20050108458A1 · Vogt · 2005 [cited by applicant]
US 20050108490A1 · Vogt · 2005 [cited by applicant]
US 20060004953A1 · Vogt · 2006 [cited by applicant]
US 20060146637A1 · Vogt · 2006 [cited by applicant]
US 20060288132A1 · McCall et al. · 2006 [cited by applicant]
US 20070005900A1 · Horrigan · 2007 [cited by examiner]
US 20080005496A1 · Dreps et al. · 2008 [cited by applicant]
US 20080189455A1 · Dreps et al. · 2008 [cited by applicant]
US 20080307164A1 · Sinclair · 2008 [cited by examiner]
US 20090216924A1 · Bennett · 2009 [cited by applicant]
US 20090319719A1 · Perego et al. · 2009 [cited by applicant]
US 20100174845A1 · Gorobets et al. · 2010 [cited by applicant]
US 20110138133A1 · Shaeffer · 2011 [cited by applicant]
US 20110145473A1 · Maheshwari · 2011 [cited by examiner]
US 20120191921A1 · Shaeffer et al. · 2012 [cited by applicant]
US 20120221769A1 · Ware et al. · 2012 [cited by applicant]
US 20130246890A1 · Au et al. · 2013 [cited by applicant]
US 20140201429A1 · Tal · 2014 [cited by applicant]
US 20150039836A1 · Wang · 2015 [cited by examiner]
US 20160124655A1 · Benhase et al. · 2016 [cited by applicant]
US 20160283125A1 · Hashimoto et al. · 2016 [cited by applicant]
US 20170285941A1 · Nale et al. · 2017 [cited by applicant]
US 20170285992A1 · Vogt · 2017 [cited by applicant]
US 20170289850A1 · Nale et al. · 2017 [cited by applicant]
US 20170315730A1 · Hashimoto et al. · 2017 [cited by applicant]
US 20180019008A1 · Norman · 2018 [cited by applicant]
US 20180173461A1 · Carroll · 2018 [cited by examiner]
US 20180181491A1 · DeLaurier et al. · 2018 [cited by applicant]
US 20180189207A1 · Nale et al. · 2018 [cited by applicant]
US 20180357016A1 · Hashimoto et al. · 2018 [cited by applicant]
US 20190004724A1 · Kanno · 2019 [cited by applicant]
US 20190018809A1 · Nale et al. · 2019 [cited by applicant]
US 20190243759A1 · Stonelake · 2019 [cited by examiner]
WO WO2015065310 · 2015 [cited by applicant]
Haining, “Non-Volatile Cache Management for Improving Write Response Time With Rotating Magnetic Media,” Sep. 2000, University of California , Santa Cruz (Year: 2000). [cited by examiner]
Notice of Allowance dated Mar. 14, 2023 in U.S. Appl. No. 16/054,983, pp. 1-34. [cited by applicant]
Office Action dated Jan. 15, 2020 in U.S. Appl. No. 16/054,983, pp. 1-39. [cited by applicant]
Office Action dated Feb. 1, 2022 in U.S. Appl. No. 16/054,983, pp. 1-21. [cited by applicant]
Office Action dated Mar. 3, 2021 in U.S. Appl. No. 16/054,983, pp. 1-42. [cited by applicant]
Office Action dated Jul. 16, 2019 in U.S. Appl. No. 16/054,983, pp. 1-29. [cited by applicant]
Office Action dated Sep. 27, 2021 in U.S. Appl. No. 16/054,983, pp. 1-44. [cited by applicant]
Office Action dated Sep. 30, 2022 in U.S. Appl. No. 16/054,983, pp. 1-183. [cited by applicant]
Office Action dated Nov. 30, 2020 in U.S. Appl. No. 16/054,983, pp. 1-37. [cited by applicant]