Thursday, May 12

Geek

Sneaky Buggers, But In A Good Way

There are two kind of flash memory: The expensive enterprise kind, called SLC, and the cheap crappy kind that everyone actually uses, called MLC.

The difference is that SLC stores one bit in each memory cell, while MLC stores two or even three.  MLC does this trick by varying the voltage...  Or is it charge...  The something levels of the cell, so where an SLC cell is either on or off, an MLC cell has four or eight distinct levels of onness or offness.

The good thing about this (which is why everyone does it ) is that you get two (or three) times as much storage in a given amount of silicon.

The bad thing about this is that it's two (or four) times less robust.  Actually, in practice, MLC is twenty or thirty times less robust than SLC.

/images/AChannelSLCvsMLC.jpg
SLC vs. MLC.  MLC (right) has already suffered data corruption.


All flash memory cells have a limit to how many times they can be erased and overwritten before they get clogged up with discarded electrons and stop working.  With SLC, this is on the order of 100,000 times.  With current MLC, it's on the order of 3,000.

This isn't a huge problem with file storage, because you tend to write a file to disk and leave it here.  Every so often you'll delete a bunch of old files and create a bunch of new files, but the turnover isn't huge.

With database storage, things are completely different.  Every time you update something in a database, the updates have to be written back to disk, along with any changes to the indexes.  A single new record can easily trigger a dozen disk writes.  A busy database can fry a standard MLC SSD.

But, because MLC drives are cheaper, everyone buys those, and economies of scale kick in and MLC gets even cheaper.  SLC drives now run around $12 per gigabyte, and MLC less than $2, even though SLC only really costs twice as much to produce.

How do you resolve this problem?  Particularly when you want to move your entire server to SSD, but might only need 10% of the disk to be enterprise-database quality SSD?

Well, if you're Toshiba and Sandisk, what you do is make the flash memory block-configurable between MLC and SLC.  Well, pseudo-SLC.  Rather than writing only 1 or 0, for specifically selected blocks you can only write 11 or 00.  If that cell is flaking out and shifts down to the 10 level or up to the 01 level, not only can you detect and correct that at read time, you can mark that block as bad and allocate a spare block in its place.  So you have improved margins and better error detection.

/images/AnoHanaSLCvsMLC.jpg
Toshiba representatives demonstrate their new block-configurable flash devices.


Micron and Intel have announced something called eMLC - enterprise MLC - but have been short on details so far.  I'll be surprised if it's not something very much like this.  I'm hoping also that it will be twice the price of regular MLC, rather than six times.

Toshiba's block-configurable trick is even better, but there's not even the ghost of a standard of how to configure different parts of a single storage device to provide a different density/reliability tradeoff, so it will be a while before that idea hits the general storage arena.

Pictures from A Channel and Ano Hana via RandomC.

Posted by: Pixy Misa at 11:27 PM | Comments (2) | Add Comment | Trackbacks (Suck)
Post contains 576 words, total size 4 kb.

1 Pixy, I just upgraded to IE9, and now the buttons on the text entry box don't work. They don't even do anything on mouse hover.

Posted by: Steven Den Beste at Friday, May 13 2011 06:30 AM (+rSRq)

2 Poop!  I have an updated version of the editor, I'll install that on the server and cross my fingers.

Posted by: Pixy Misa at Friday, May 13 2011 01:30 PM (PiXy!)

Hide Comments | Add Comment

Comments are disabled. Post is locked.
49kb generated in CPU 0.0213, elapsed 0.4362 seconds.
56 queries taking 0.4235 seconds, 339 records returned.
Powered by Minx 1.1.6c-pink.