Patent ID: 8738844

Claim:
A program method for a multi-level cell (MLC) flash memory, the MLC flash memory circuit comprising a memory array, the memory array comprising a plurality of pages and a plurality of paired pages, which respectively correspond to the pages, the program method comprising: obtaining a program address command; determining whether the program address command corresponds to any one of the paired pages; when the program address command corresponds to a first paired page, which corresponds to a first page among the pages, among the paired pages, copying data stored in the first page to a non-volatile memory; programming the first paired page after the data stored in the first page has been copied; and when a program fail event has taken place in a marked paired page within a first block of the memory array, moving data stored in pages, except the marked paired page and a marked page corresponding to the marked paired page, of the first block to a clean second block.