[geeks] Flash wear leveling

Joshua Boyd jdboyd at jdboyd.net
Thu Feb 21 17:38:45 CST 2008


On Feb 21, 2008, at 5:27 PM, Alois Hammer wrote:
>
> *How* does modern flash memory wear leveling work?
>
> I'm asking because I'm working on several projects that are going to
> require use of flash memory to save on space, power, and heat.  I've
> spent hours on Google, and the best I can come up with is:
>
> * Really old industrial flash parts speak FAT16, because if they
> didn't, they'd have no clue what sectors are free, nor how to allocate
> newly-requested sectors based on usage.  I've actually found a couple
> of ancient (16MB part) whitepapers on the subject.
>
> * Modern consumer parts (what I'll be using -- either SD or CF,
> probably) "have wear leveling."  I've tried contacting several major
> manufacturers (incl. Transcend) to find out if SD comes preformatted
> as FAT16 and SDHC as FAT32 for a good reason, or if someone's made
> breakthroughs in wear leveling that don't require the controller's
> knowledge of the underlying filesystem to work.  I've gotten no
> responses whatsoever.
>
> * My best guess, based on available information, is that if I start
> tossing UFS or ext3 or other filesystems onto flash memory, wear
> leveling goes out the window.
>
> Even the tiniest scrap of information would be a big help.  TIA.

I haven't yet worn out any CF cards running linux off of them with  
ext3fs file systems.

I don't see why FS level knowledge is required to wear level flash.   
Just use translate the physical block addresses to logical block  
addresses and shuffled the logical blocks around the physical blocks  
as needed to wear level it.

http://en.wikipedia.org/wiki/Static_Wear_Leveling



More information about the geeks mailing list