detect and manage power cut on MLC NAND

Iwo Mergler Iwo.Mergler at netcommwireless.com
Thu Mar 19 23:52:13 PDT 2015


On Fri, 20 Mar 2015 16:07:07 +1100
Qi Wang 王起 (qiwang) <qiwang at micron.com> wrote:

> Hi Iwo,
> 
> Glad to talk you here, actually I already talked with Boris about
> MLC NAND power loss recovery in another email loop couple of days 
> before.
> 
> I am Micron Shanghai Embedded business group SW leader, in charge
> Of SW develop, include mtd driver and filesystem optimization. 
> 	
> I talked with Boris, I submitted a patent to prevent pair page
> corruption after power loss in April 2014. And now, I am 
> considering to contribute it to Linux community (still need to
> align with Micron patent committee) if all of you think this patent 
> is valuable to implement to UBIFS.
> 
> The basic concept still is backup method, detail as below-
> 
> 1. When program low page, utilize multiple plane method to 
>    program low page to target address and another backup block. 
>    Barely has performance downgrade even program 2 pages because 
>    of multiple plane feature. 
> 2. when program upper page, no need to backup lower page at all.
> 
> This method nearly don't have performance penalty compare to before.
> But need implement multiple plane function, and need to keep 
> the backup block safe to ensure the backup low page data is good
> when program relevant upper page.
> 
> How do you think about this idea?

Hi Qi,

it sounds like a worthwhile improvement to the backup to log method.
I have a few questions.

If I understand you correctly, this method takes advantage of
the odd/even block planes and the simultaneous multi-plane write.

Do you have to send the page data twice? Or can you apply the
same page buffer to both planes?

If you are about to write the low page in a, say, even block,
you need find an odd block with the same page available and write
the same page content to both. I understand that the column
addresses have to be identical - is that correct?

I seem to remember a requirement to write pages to a block in a
monotonic fashion (low to high). Is that still the case? It
seems that the low page backup could violate that rule otherwise.

How would you deal with the backup blocks? The backup must stay
in place after writing the low page, but only to the moment the
corresponding high page is written. After that, it's obsolete.

Do you envision to dedicate some blocks for this purpose? Or
would the duplicated pages become part of normal storage blocks?

Naively, I see the cost of this method to be somewhere between
a 25% reduction in storage or a 25% increase in erase cycles,
depending on the backup block handling.
Does that match your own prediction?


Best regards,

Iwo


More information about the linux-mtd mailing list