A non-volatile storage system stores data by programming the data as binary data into blocks that have not yet been programmed with multi-state data and have not yet been programmed with binary data X times. The system transfers data from multiple blocks (source blocks) of binary data to one block (target block) of multi-state data using a multi-state programming process, where the target block has been previously programmed with binary data X times (or less than X times).
Legal claims defining the scope of protection, as filed with the USPTO.
1. A method of programming for a non-volatile storage system, comprising: programming data as binary data into units of non-volatile storage elements that have not yet been programmed with multi-state data and have not yet been programmed with binary data a specific number of times; and transferring data from multiple units of non-volatile storage elements storing binary data to one target unit of non-volatile storage elements storing multi-state data using a multi-state programming process after the target unit has been previously programmed with binary data the specific number of times.
2. The method of claim 1 , further comprising: incrementing cycle counts for units subjected to programming of binary data; marking units as valid in response to programming of binary data and programming of multi-state data; and marking units as invalid when binary data in the units is transferred to multi-state data.
3. The method of claim 1 , wherein the programming data as binary data comprises: determining that a set of units of non-volatile storage elements have not been subjected to binary programming the specific number of times; and performing a binary programming process to store the data as binary data in the set of units of non-volatile storage elements.
4. The method of claim 1 , wherein the programming data as binary data comprises: determining that a set of the specific number of units of non-volatile storage elements have not been subjected to binary programming the specific number of times; and performing a binary programming process to store the data as binary data in the set of the specific number of units of non-volatile storage elements.
5. The method of claim 1 , wherein the programming data as binary data comprises determining that units of non-volatile storage elements have not been subjected to binary programming the specific number of times.
6. The method of claim 1 , wherein the transferring data from multiple units of non-volatile storage elements storing binary data comprises: determining that a specific unit of non-volatile storage elements has been previously programmed with binary data the specific number of times; reading binary data from a set of units of non-volatile storage elements; combining the binary data from the set of units of non-volatile storage elements into one set of multi-state data; and programming the one set of multi-state data into the specific unit of non-volatile storage elements.
7. The method of claim 1 , wherein the transferring data from multiple units of non-volatile storage elements storing binary data comprises: determining that a specific unit of non-volatile storage elements has been previously programmed with binary data the specific number of times; reading binary data from a set of the specific number of units of non-volatile storage elements; and combining the binary data from the set of the specific number of units of non-volatile storage elements into the specific number of bits of multi-state data; and programming the specific number of bits of multi-state data into the specific unit of non-volatile storage elements.
8. The method of claim 1 , wherein the transferring data from multiple units of non-volatile storage elements storing binary data comprises determining that a specific unit of non-volatile storage elements has been programmed with binary data the specific number of times.
9. The method of claim 1 , wherein: determining that the non-volatile storage system is idle, the transferring data from multiple units of non-volatile storage elements storing binary data to one target unit of non-volatile storage elements is performed is response to determining that the non-volatile storage system is idle.
10. The method of claim 1 , wherein: the programming data as binary data comprises determining that a set of units of non-volatile storage elements have not been subjected to binary programming the specific number of times and performing a binary programming process to store the data as binary data in the set of units of non-volatile storage elements; and the transferring data from multiple units of non-volatile storage elements storing binary data comprises determining that a specific unit of non-volatile storage elements has been programmed with binary data the specific number of times, reading binary data from a set of the specific number of units of non-volatile storage elements, combining the binary data from the set of the specific number of units of non-volatile storage elements into one set of the specific number of bits of multi-state data and programming the one set of the specific number of bits of multi-state data into the specific unit of non-volatile storage elements.
11. The method of claim 10 , wherein: determining that the non-volatile storage system is idle, the transferring data from multiple units of non-volatile storage elements storing binary data to one target unit of non-volatile storage elements is performed is response to determining that the non-volatile storage system is idle; and the method further comprises incrementing cycle counts for units subjected to programming of binary data, marking units as valid in response to programming of binary data and programming of multi-state data and marking units as invalid when binary data in the units is transferred to multi-state data.
12. The method of claim 1 , further comprising: formatting the non-volatile storage system; and repeating the steps of programming data and transferring data.
13. The method of claim 1 , wherein: the specific number is equal to the number of bits of data stored in the non-volatile storage elements.
14. A method of programming for a non-volatile storage system, comprising: programming data as binary data into units of non-volatile storage elements that have not yet been programmed with multi-state data and have not yet been programmed with binary data three times; and transferring data from multiple units of non-volatile storage elements storing binary data to one target unit of non-volatile storage elements storing multi-state data using a multi-state programming process after the target unit has been previously programmed with binary data three times.
15. The method of claim 1 , wherein: the units of non-volatile storage elements are blocks of non-volatile storage elements.
16. The method of claim 1 , wherein: the non-volatile storage elements are flash memory devices.
17. A method of programming for a non-volatile storage system, comprising: receiving one or more requests to program; receiving data to be programmed for the one or more requests; in response to the one or more requests to program, programming the data as binary data into multiple units of non-volatile storage elements that have not yet been programmed with multi-state data and have not yet been programmed with binary data a specific number of times; updating programming cycle counters for the units of non-volatile storage elements; identifying a target unit of non-volatile storage elements that has been previously programmed with binary data the specific number of times; combining data from the multiple units of non-volatile storage elements storing binary data and storing the combined data in the target unit of non-volatile storage elements as multi-state data using a multi-state programming process; and marking the multiple units of non-volatile storage elements as available for additional binary programming if the multiple units of non-volatile storage elements have not yet been programmed with binary data the specific number of times.
18. The method of claim 17 , further comprising: formatting the non-volatile storage system subsequent to the programming the data.
19. The method of claim 17 , wherein: the specific number is equal to the number of bits of data stored in the non-volatile storage elements.
20. The method of claim 17 , further comprising: identifying the units of non-volatile storage elements that have not yet been programmed with multi-state data and have not yet been programmed with binary data the specific number of times.
21. The method of claim 17 , wherein: determining that the non-volatile storage system is idle, the combining data and storing the combined data is performed in response to determining that the non-volatile storage system is idle.
22. A non-volatile storage apparatus, comprising: a plurality of non-volatile storage elements; and one or more control circuits in communication with the non-volatile storage elements, the one or more control circuits identify a first set of units of the non-volatile storage elements that have not yet been programmed with multi-state data and have not yet been programmed with binary data a specific number of times, the one or more control circuits program first data as binary data into the first set of units of the non-volatile storage elements, the one or more control circuits identify a target unit of non-volatile storage elements that has been previously programmed with binary data the specific number of times, the one or more control circuits combine the first data from the first set of units of non-volatile storage elements and store the combined data in the target unit of non-volatile storage elements as multi-state data.
23. A non-volatile storage apparatus according to claim 22 , wherein: the one or more control circuits increment cycle counts for units subjected to programming of binary data; the one or more control circuits mark units as valid in response to programming of binary data and programming of multi-state data; and the one or more control circuits mark units as invalid when binary data in the units is transferred to multi-state data.
24. A non-volatile storage apparatus according to claim 22 , wherein: the specific number is equal to the number of bits of data stored in the non-volatile storage elements and the number of units in the first set of units.
25. A non-volatile storage apparatus according to claim 22 , wherein: the non-volatile storage elements are NAND flash memory devices.
26. The method of claim 1 , wherein: the specific number is greater than zero.
27. The method of claim 1 , wherein: the specific number is greater than one.
Cooperative Patent Classification codes for this invention. Click any code to explore related patents in that topic.
December 18, 2008
February 7, 2012
Browse 5M+ US patents with plain-English claim translations and AI-generated analysis.