IP Library Granted Patent US 12,229,441
Granted Patent B2
US 12,229,441 · App. 18/499,750 · Granted Feb 18, 2025

Memory system and method for controlling nonvolatile memory

Inventors: Shinichi Kanno (Ota, JP); Hideki Yoshida (Yokohama, JP); Naoki Esaka (Kawasaki, JP); Hiroshi Nishimura (Hachioji, JP)
Assignee: KIOXIA CORPORATION
G06F3/0656G06F3/061G06F3/064G06F3/0679G06F12/1009
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,229,441
App. No.
18/499,750
Granted
Feb 18, 2025
Kind
B2
Abstract

According to one embodiment, a memory system includes a nonvolatile memory and a controller. The controller acquires, from a host, write data having the same first size as a data write unit of the nonvolatile memory and obtained by dividing write data associated with one write command having a first identifier indicating a first write destination block in a plurality of write destination blocks into a plurality of write data or combining write data associated with two or more write commands having the first identifier. The controller writes the acquired write data having the first size to the first write destination block by a first write operation.

Claims (93)

1. A memory system connectable to a host, comprising:

a nonvolatile memory; and

a controller electrically connected to the nonvolatile memory and configured to:

in response to receiving, from the host, a write command designating at least a first location of a memory of the host where first data is stored, acquire the first data from the first location of the memory of the host; and

in response to receiving from the host, after acquiring the first data from the first location of the memory of the host, a read command requesting reading of the first data and designating at least a second location of the memory of the host where the first data is to be stored, the second location being different from the first location, acquire the first data again from the first location of the memory of the host, and return the first data, which has been acquired again, to the host such that the first data is stored in the second location of the memory of the host.

2. The memory system of claim 1 , wherein

the controller is further configured to:

in response to receiving the write command from the host, transmit the first data to the nonvolatile memory after acquiring the first data from the first location of the memory of the host; and

in response to receiving the read command from the host after transmitting the first data to the nonvolatile memory, acquire the first data again from the first location of the memory of the host, and return the first data, which has been acquired again, to the host such that the first data is stored in the second location of the memory of the host.

3. The memory system of claim 1 , further comprising:

a buffer, wherein

the controller is further configured to:

in response to receiving the write command from the host, acquire the first data from the first location of the memory of the host, store the first data into the buffer, and transmit the first data from the buffer to the nonvolatile memory; and

in response to receiving the read command from the host after transmitting the first data to the nonvolatile memory,

determine whether the first data is still stored in the buffer; and

in a case where the first data is not stored in the buffer, acquire the first data again from the first location of the memory of the host, store the first data, which has been acquired again, into the buffer, and return the first data from the buffer to the host such that the first data is stored in the second location of the memory of the host.

4. The memory system of claim 3 , wherein

the controller is further configured to:

in a case where the first data is still stored in the buffer, return the first data from the buffer to the host such that the first data is stored in the second location of the memory of the host, without acquiring the first data again from the first location of the memory of the host.

5. The memory system of claim 1 , wherein

the controller is further configured to:

in response to receiving the write command from the host, transmit the first data to the nonvolatile memory after acquiring the first data from the first location of the memory of the host;

instruct the nonvolatile memory to write the first data after transmitting the first data to the nonvolatile memory; and

in response to receiving the read command from the host in a period in which the first data has not yet become readable from the nonvolatile memory after instructing the nonvolatile memory to write the first data, acquire the first data again from the first location of the memory of the host, and return the first data, which has been acquired again, to the host such that the first data is stored in the second location of the memory of the host.

6. The memory system of claim 5 , wherein

the nonvolatile memory includes a memory cell array,

the nonvolatile memory is configured to:

write the first data to the memory cell array by a multi-step write operation including at least a first-step write operation and a second-step write operation, and

the controller is further configured to:

transmit the first data to the nonvolatile memory; and

in response to receiving the read command from the host after instructing the nonvolatile memory to perform the first-step write operation for the first data and before instructing the nonvolatile memory to perform the second-step write operation for the first data, acquire the first data again from the first location of the memory of the host, and return the first data, which has been acquired again, to the host such that the first data is stored in the second location of the memory of the host.

7. The memory system of claim 6 , wherein

the memory cell array includes a memory cell to store data in a non-volatile manner according to a threshold voltage of the memory cell, and

the second-step write operation is an operation of adjusting the threshold voltage of the memory cell which has been set by the first-step write operation.

8. The memory system of claim 5 , wherein

the nonvolatile memory includes a memory cell array,

the nonvolatile memory is configured to:

write the first data to the memory cell array by a multi-step write operation including at least a first-step write operation and a second-step write operation, and

the controller is further configured to:

transmit the first data to the nonvolatile memory; and

in response to receiving the read command from the host after instructing the nonvolatile memory to perform the first-step write operation for the first data and before the nonvolatile memory has finished the second-step write operation for the first data, acquire the first data again from the first location of the memory of the host, and return the first data, which has been acquired again, to the host such that the first data is stored in the second location of the memory of the host.

9. The memory system of claim 8 , wherein

the memory cell array includes a memory cell to store data in a non-volatile manner according to a threshold voltage of the memory cell, and

the second-step write operation is an operation of adjusting the threshold voltage of the memory cell which has been set by the first-step write operation.

10. The memory system of claim 1 , wherein

the nonvolatile memory includes a plurality of blocks, each of the plurality of blocks being a unit for a data erase operation,

the write command further designates an identifier specifying one of the plurality of blocks to which the first data is to be written, and

the controller is further configured to write the first data to the one of the plurality of blocks which is specified by the identifier.

11. A method of controlling a nonvolatile memory, comprising:

receiving, from a host, a write command designating at least a first location of a memory of the host where first data is stored;

in response to the received write command, acquiring the first data from the first location of the memory of the host;

receiving from the host, after acquiring the first data from the first location of the memory of the host, a read command requesting reading of the first data and designating at least a second location of the memory of the host where the first data is to be stored, the second location being different from the first location; and

in response to the received read command, acquiring the first data again from the first location of the memory of the host, and returning the first data, which has been acquired again, to the host such that the first data is stored in the second location of the memory of the host.

12. The method of claim 11 , further comprising:

in response to the received write command, transmitting the first data to the nonvolatile memory after acquiring the first data from the first location of the memory of the host; and

in response to the read command received from the host after transmitting the first data to the nonvolatile memory, acquiring the first data again from the first location of the memory of the host, and returning the first data, which has been acquired again, to the host such that the first data is stored in the second location of the memory of the host.

13. The method of claim 11 , further comprising:

in response to the received write command, acquiring the first data from the first location of the memory of the host, storing the first data into a buffer, and transmitting the first data from the buffer to the nonvolatile memory; and

in response to the read command received from the host after transmitting the first data to the nonvolatile memory,

determining that the first data is no longer stored in the buffer; and

in response to determining that the first data is no longer stored in the buffer, acquiring the first data again from the first location of the memory of the host, storing the first data, which has been acquired again, into the buffer, and returning the first data from the buffer to the host such that the first data is stored in the second location of the memory of the host.

14. The method of claim 11 , further comprising:

in response to the received write command, acquiring the first data from the first location of the memory of the host, storing the first data into a buffer, and transmitting the first data from the buffer to the nonvolatile memory; and

in response to the read command received from the host after transmitting the first data to the nonvolatile memory,

determining whether the first data is still stored in the buffer; and

according to the determination on whether the first data is still stored in the buffer, acquiring the first data again from the first location of the memory of the host, storing the first data, which has been acquired again, into the buffer, and returning the first data from the buffer to the host such that the first data is stored in the second location of the memory of the host.

15. The method of claim 11 , further comprising:

in response to the received write command, transmitting the first data to the nonvolatile memory after acquiring the first data from the first location of the memory of the host;

instructing the nonvolatile memory to write the first data after transmitting the first data to the nonvolatile memory; and

in response to the read command received from the host in a period in which the first data has not yet become readable from the nonvolatile memory after instructing the nonvolatile memory to write the first data, acquiring the first data again from the first location of the memory of the host, and returning the first data, which has been acquired again, to the host such that the first data is stored in the second location of the memory of the host.

16. The method of claim 15 , wherein

the nonvolatile memory includes a memory cell array, and

the nonvolatile memory is configured to:

write the first data to the memory cell array by a multi-step write operation including at least a first-step write operation and a second-step write operation, and the method further comprises:

transmitting the first data to the nonvolatile memory; and

in response to the read command received from the host after instructing the nonvolatile memory to perform the first-step write operation for the first data and before instructing the nonvolatile memory to perform the second-step write operation for the first data, acquiring the first data again from the first location of the memory of the host, and returning the first data, which has been acquired again, to the host such that the first data is stored in the second location of the memory of the host.

17. The method of claim 16 , wherein

the memory cell array includes a memory cell to store data in a non-volatile manner according to a threshold voltage of the memory cell, and

the second-step write operation is an operation of adjusting the threshold voltage of the memory cell which has been set by the first-step write operation.

18. The method of claim 15 , wherein

the nonvolatile memory includes a memory cell array, and

the nonvolatile memory is configured to:

write the first data to the memory cell array by a multi-step write operation including at least a first-step write operation and a second-step write operation, and the method further comprises:

transmitting the first data to the nonvolatile memory; and

in response to the read command received from the host after instructing the nonvolatile memory to perform the first-step write operation for the first data and before the nonvolatile memory has finished the second-step write operation for the first data, acquiring the first data again from the first location of the memory of the host, and returning the first data, which has been acquired again, to the host such that the first data is stored in the second location of the memory of the host.

19. The method of claim 18 , wherein

the memory cell array includes a memory cell to store data in a non-volatile manner according to a threshold voltage of the memory cell, and

the second-step write operation is an operation of adjusting the threshold voltage of the memory cell which has been set by the first-step write operation.

20. The method of claim 11 , wherein

the nonvolatile memory includes a plurality of blocks, each of the plurality of blocks being a unit for a data erase operation,

the write command further designates an identifier specifying one of the plurality of blocks to which the first data is to be written, and

the method further comprises:

writing the first data to the one of the plurality of blocks which is specified by the identifier.

Priority Claims (1)
JP 2018-083662 · Apr 25, 2018 · national
Continuity (5)
Continuation 17981817 · Nov 7, 2022
Continuation 17406619 · Aug 19, 2021
Continuation 16928422 · Jul 14, 2020
Continuation 16351993 · Mar 13, 2019
Related Publication 20240061610A1 · Feb 22, 2024
References Cited (39)
US 8595411B2 · Selinger et al. · 2013 [cited by applicant]
US 8717842B2 · Suzuki · 2014 [cited by applicant]
US 8924629B1 · Call · 2014 [cited by applicant]
US 9087614B2 · Son · 2015 [cited by applicant]
US 9158617B2 · Cho · 2015 [cited by applicant]
US 10102145B1 · Michel · 2018 [cited by examiner]
US 10133666B2 · Wei · 2018 [cited by applicant]
US 10684952B2 · Aida · 2020 [cited by examiner]
US 20050071589A1 · Tross · 2005 [cited by examiner]
US 20080022163A1 · Tanaka · 2008 [cited by applicant]
US 20090172499A1 · Olbrich · 2009 [cited by examiner]
US 20100036890A1 · Kawamura · 2010 [cited by examiner]
US 20100131805A1 · Katsuragi · 2010 [cited by applicant]
US 20100199025A1 · Nanjou · 2010 [cited by applicant]
US 20100262777A1 · Kaga · 2010 [cited by applicant]
US 20120072641A1 · Suzuki · 2012 [cited by applicant]
US 20130191705A1 · Watanabe et al. · 2013 [cited by applicant]
US 20130212319A1 · Hida et al. · 2013 [cited by applicant]
US 20140181364A1 · Berke · 2014 [cited by examiner]
US 20140189206A1 · Sinclair · 2014 [cited by applicant]
US 20140192583A1 · Rajan · 2014 [cited by applicant]
US 20140195722A1 · Tatara · 2014 [cited by applicant]
US 20150121021A1 · Nakamura · 2015 [cited by applicant]
US 20150127886A1 · Kanno · 2015 [cited by applicant]
US 20150234598A1 · Fujimoto · 2015 [cited by applicant]
US 20160259687A1 · Yoshihara · 2016 [cited by applicant]
US 20160266827A1 · Hasegawa et al. · 2016 [cited by applicant]
US 20170262228A1 · Kanno · 2017 [cited by applicant]
US 20180004416A1 · Okita · 2018 [cited by applicant]
US 20180046404A1 · Jin · 2018 [cited by examiner]
US 20190205207A1 · Suzuki · 2019 [cited by applicant]
US 20190369921A1 · Oh · 2019 [cited by applicant]
US 20220342553A1 · Gyllenskog · 2022 [cited by examiner]
JP 2012128660A · 2012 [cited by applicant]
JP 5296041 · 2013 [cited by applicant]
JP 201588121A · 2015 [cited by applicant]
JP 2016170696 · 2016 [cited by applicant]
JP 2017162068A · 2017 [cited by applicant]
Yiying Zhang et al., “De-indirection for Flash-based SSDs with Nameless Writes”, 10th USENIX Conference on File and Storage Technologies (FAST '12), Feb. 14-17, 2012, pp. 1-16, downloaded on Sep. 13, 2017 from: https://… [cited by applicant]