System and method for direct write to MLC memory
First Claim
1. A method for programming non-volatile memory in a memory device, a first part of the non-volatile memory configured as single-level cell (SLC) non-volatile memory and a second part of the non-volatile memory is configured as multi-level cell (MLC) non-volatile memory, the method comprising:
- receiving data from a host device;
storing the data in one or more volatile memory;
storing part but not all of the data in the SLC non-volatile memory, wherein the data received from the host device comprises the part of the data stored in the SLC non-volatile memory and a remainder;
storing, using the data stored in the one or more volatile memory, the data in MLC non-volatile memory without transfer of the part of the data stored in SLC non-volatile memory from the SLC non-volatile memory;
determining whether there is an error in storing at least some of the data in the MLC non-volatile memory;
in response to determining that there is an error in storing at least some of the data in the MLC non-volatile memory;
requesting the host device to resend the remainder of the data;
receiving the remainder of the data from the host device; and
using at least a portion of the part of the data stored in the SLC non-volatile memory and the remainder of the data received from the host device to program the MLC non-volatile memory.
2 Assignments
0 Petitions
Accused Products
Abstract
Apparatus and method for writing data directly to multi-level cell (MLC) memory without folding or transferring of the data from single-level cell (SLC) memory to MLC memory are disclosed. A memory device, which includes the SLC memory and MLC memory, receives data from a host device. The memory device programs the data (such as the lower/middle/upper pages) from volatile memory into MLC memory, without transferring data from SLC memory. The memory device also stores part of the data (such as the lower/middle pages) in SLC memory as a backup in case of error. In particular, if the data is not properly programmed into the MLC memory, the data in SLC memory is used to program the data a second time into the MLC memory.
-
Citations
21 Claims
-
1. A method for programming non-volatile memory in a memory device, a first part of the non-volatile memory configured as single-level cell (SLC) non-volatile memory and a second part of the non-volatile memory is configured as multi-level cell (MLC) non-volatile memory, the method comprising:
-
receiving data from a host device; storing the data in one or more volatile memory; storing part but not all of the data in the SLC non-volatile memory, wherein the data received from the host device comprises the part of the data stored in the SLC non-volatile memory and a remainder; storing, using the data stored in the one or more volatile memory, the data in MLC non-volatile memory without transfer of the part of the data stored in SLC non-volatile memory from the SLC non-volatile memory; determining whether there is an error in storing at least some of the data in the MLC non-volatile memory; in response to determining that there is an error in storing at least some of the data in the MLC non-volatile memory; requesting the host device to resend the remainder of the data; receiving the remainder of the data from the host device; and using at least a portion of the part of the data stored in the SLC non-volatile memory and the remainder of the data received from the host device to program the MLC non-volatile memory. - View Dependent Claims (2, 3, 4, 5)
-
-
6. A method for programming non-volatile memory in a memory device, a first part of the non-volatile memory configured as single-level cell (SLC) non-volatile memory and a second part of the non-volatile memory is configured as multi-level cell (MLC) non-volatile memory, the method comprising:
-
receiving data from a host device; storing the data in one or more volatile memory; storing part or all of the data in the SLC non-volatile memory; storing, using the data stored in the one or more volatile memory, the data in MLC non-volatile memory without transfer of the part or all of the data stored in SLC non-volatile memory from the SLC non-volatile memory; and sending, by the memory device, an acknowledgement of receipt of the part of the data programmed in the SLC non-volatile memory, the sending of the acknowledgement being performed prior to completion of programming the data in the MLC non-volatile memory. - View Dependent Claims (7, 8)
-
-
9. A memory device comprising:
-
one or more volatile memory; non-volatile memory, wherein a first part of the non-volatile memory is configured as single-level cell (SLC) non-volatile memory and a second part of the non-volatile memory is configured as multi-level cell (MLC) non-volatile memory; programming circuitry configured to program at least a part of data into SLC non-volatile memory; transfer circuitry configured to transfer the data into the one or more volatile memory; programming circuitry configured to program the data from the one or more volatile memory into MLC non-volatile memory without transfer of the at least a part of the data stored in SLC non-volatile memory from the SLC non-volatile memory; and acknowledgement circuitry configured to send, in response to programming of less than all of the data into the SLC non-volatile memory, an acknowledgement to a host device of receipt of the less than all of the data. - View Dependent Claims (10, 11, 12, 13, 14, 15, 16)
-
-
17. A method for programming non-volatile memory in a memory device, a first part of the non-volatile memory configured as single-level cell (SLC) non-volatile memory and a second part of the non-volatile memory is configured as multi-level cell (MLC) non-volatile memory, the method comprising:
-
receiving data from a host device; storing the data in one or more volatile memory; storing part or all of the data in single-level cell (SLC) non-volatile memory; performing a first programming of the MLC non-volatile memory using the data stored in one or more volatile memory without using the data stored in the SLC non-volatile memory; determining whether there is an error in the first programming of the MLC non-volatile memory; and in response to determining that there is an error in the first programming of the MLC non-volatile memory, performing a second programming of the MLC non-volatile memory using part or all of the data stored in the SLC non-volatile memory, wherein storing of at least a portion of the data in the SLC non-volatile memory is performed at least partly simultaneously with the storing of the at least a portion of the data in the volatile memory. - View Dependent Claims (18, 19, 20, 21)
-
Specification