US 7,526,599 B2
Method and apparatus for effectively enabling an out of sequence write process within a non-volatile memory system
Robert C Chang, Danville, Calif. (US); Bahman Qawami, San Jose, Calif. (US); and Farshid Sabet-Sharghi, San Jose, Calif. (US)
Assigned to SanDisk Corporation, Milpitas, Calif. (US)
Filed on Oct. 02, 2003, as Appl. No. 10/679,008.
Claims priority of provisional application 60/421725, filed on Oct. 28, 2002.
Prior Publication US 2004/0103241 A1, May 27, 2004
Int. Cl. G06F 12/00 (2006.01)
U.S. Cl. 711—103 9 Claims
OG exemplary drawing
 
1. A method for performing a write operation in a non-volatile memory system, the non-volatile memory system including an MLC NAND flash non-volatile memory having a plurality of erase units, each erase unit including a plurality of programming units arranged in a sequence, each programming unit comprising a plurality of non-volatile memory cells, wherein a first logical block is mappable to one or more erase units and includes a plurality of logical pages arranged in a sequence, the method comprising:
writing data associated with the first logical block into an original erase unit to which the first logical block is mapped, so that data associated with the logical pages are written into corresponding programming units in that original erase unit in sequence;
grouping the programming units within a first update erase unit into a plurality of groups of programming units, the programming units within each group arranged in a sequence comprising a first programming unit, a second programming unit, and a third programming unit;
writing contents of an updated first logical page into the first programming unit in a first group of programming units of the first update erase unit;
writing contents of an updated third logical page into the third programming unit of the first group of programming units, the third logical page later in the sequence of logical pages than the first logical page, and the third programming unit later in the sequence of programming units within the first group than the first programming unit and the second programming unit;
receiving contents of an updated second logical page of the first logical block, the second logical page earlier in the sequence of logical pages than the third logical page;
determining whether one of the groups of programming units in the first update erase unit is available for writing into;
responsive to a group of programming units being available in the first update erase unit, writing updated contents of the second logical page into a programming unit in an available group of programming units of the first update erase unit; and
responsive to none of the groups of programming units being available in the first update erase unit, merging contents associated with the first logical block stored in the original erase unit and updated contents of the first logical block stored in the first update erase unit into a second update erase unit.