The Flash Hierarchy & Data Loss

We've already established that a flash cell can either store one or two bits depending on whether it's a SLC or MLC device. Group a bunch of cells together and you've got a page. A page is the smallest structure you can program (write to) in a NAND flash device. In the case of most MLC NAND flash each page is 4KB. A block consists of a number of pages, in the Intel MLC SSD a block is 128 pages (128 pages x 4KB per page = 512KB per block = 0.5MB). A block is the smallest structure you can erase. So when you write to a SSD you can write 4KB at a time, but when you erase from a SSD you have to erase 512KB at a time. I'll explore that a bit further in a moment, but let's look at what happens when you erase data from a SSD.

Whenever you write data to flash we go through the same iterative programming process again. Create an electric field, electrons tunnel through the oxide and the charge is stored. Erasing the data causes the same thing to happen but in the reverse direction. The problem is that the more times you tunnel through that oxide, the weaker it becomes, eventually reaching a point where it will no longer prevent the electrons from doing whatever they want to do.

On MLC flash that point is reached after about 10,000 erase/program cycles. With SLC it's 100,000 thanks to the simplicity of the SLC design. With a finite lifespan, SSDs have to be very careful in how and when they choose to erase/program each cell. Note that you can read from a cell as many times as you want to, that doesn't reduce the cell's ability to store data. It's only the erase/program cycle that reduces life. I refer to it as a cycle because an SSD has no concept of just erasing a block, the only time it erases a block is to write new data. If you delete a file in Windows but don't create a new one, the SSD doesn't actually remove the data from flash until you're ready to write new data.

Now going back to the disparity between how you program and how you erase data on a SSD, you program in pages and you erase in blocks. Say you save an 8KB file and later decide that you want to delete it, it could just be a simple note you wrote for yourself that you no longer need. When you saved the file, it'd be saved as two pages in the flash memory. When you go to delete it however, the SSD mark the pages as invalid but it won't actually erase the block. The SSD will wait until a certain percentage of pages within a block are marked as invalid before copying any valid data to new pages and erasing the block. The SSD does this to limit the number of times an individual block is erased, and thus prolong the life of your drive.

Not all SSDs handle deletion requests the same way, how and when you decide to erase a block with invalid pages determines the write amplification of your device. In the case of a poorly made SSD, if you simply wanted to change a 16KB file the controller could conceivably read the entire block into main memory, change the four pages, erase the block from the SSD and then write the new block with the four changed pages. Using the page/block sizes from the Intel SSD, this would mean that a 16KB write would actually result in 512KB of writes to the SSD - a write amplification factor of 32x.

At this point we don't have any data from any of the other SSD controller makers on how they handle situations like this, but Intel states that traditional SSD controllers suffer from write amplification in the 20 - 40x range, which reduces the longevity of their drives. Intel states that on typical client workloads its write amplification factor is less than 1.1x, in other words you're writing less than 10% more data than you need to. The write amplification factor itself doesn't mean much, what matters is the longevity of the drive and there's one more factor that contributes there.

We've already established that with flash there are a finite number of times you can write to a block before it loses its ability to store data. SSDs are pretty intelligent and will use wear leveling algorithms to spread out block usage across the entirety of the drive. Remember that unlike mechanical disks, it doesn't matter where on a SSD you write to, the performance will always be the same. SSDs will thus attempt to write data to all blocks of the drive equally. For example, let's say you download a 2MB file to your band new, never been used SSD, which gets saved to blocks 10, 11, 12 and 13. You realize you downloaded the wrong file and delete it, then go off to download the right file. Rather than write the new file to blocks 10, 11, 12 and 13, the flash controller will write to blocks 14, 15, 16 and 17. In fact, those four blocks won't get used again until every other block on the drive has been written to once. So while your MLC SSD may only have a lifespan of 10,000 cycles, it's going to last quite a while thanks to intelligent wear leveling algorithms.

Intel's wear leveling efficiency, all blocks get used nearly the same amount

Bad wear leveling, presumably on existing SSDs, some blocks get used more than others

Intel's SSDs carry about a 4% wear leveling inefficiency, meaning that 4% of the blocks on an Intel SSD will be worn at a rate higher than the rest.

Post Your Comment

97 Comments

#1 Meaning; Great read.
#2 Meaning; Why do you not use World of Warcraft in your testings more? This game still has huge system requirements on absolute full settings in crouded areas. No one is getting 60fps in that game in Shatt on a saterday night 16xAA/AF full distance view. Everything maxed running a high resolution. Also, the disk access of this game may not be as much as Crysis, but its far FAR more prolonged as people play this game for a matter of years, instead of a handfull of months tops. Reply

Sorry if this repeats what anyone else has said, but I think this is the best harddisk review I have seen. All the other hdd reviews I have read though, all go into detail about how many mb/s the drive can transfer and what the access time is, I/O performance etc. This is all very nice, but all we really care about is how does the hdd perform in real world apps and games in comparision to other drives. How much faster is my browser going to load.

And that is why I was so impressed with this review. I realise it probably took more time to create this review, but it was well worth it. You can see how much the drives in the comparision compare to the amount of money you will spend instead of having to extrapolate from throughput benchmarks.

I would feel a lot more confident in putting down money on the X25 after this review. Because I can see what the benefit I would get after in comparsion to other drives. Though the X25 needs to be another $100 dollars cheaper...

You are just making it clear that you do not have a firm grasp of English. You are afraid of those who criticize poor grammar, because you know that you yourself will be exposed for the fraudulent pustule that lies beneath your slimy veneer.

I have a life. I'm just sick of illiterate authors. Just because it is a tech site is no excuse for extremely poor writing skills. I'm talking about skills that should be completely mastered before being allowed to graduate from elementary school.

^
Take your elitism elsewhere. If you actually practiced what you preached then you'd note your own comma abuse:

"You are afraid of those who criticize poor grammar, because you know that you yourself will be exposed for the fraudulent pustule that lies beneath your slimy veneer."

The second clause is dependent. Therefore, it does not necessitate a comma. Reply

Yes as the other poster say, the Intel drive have solved the issues with small random writes that the OZC and other MLC drives so far have been suffering from. If you read the whole article thoroughly you will see that clearly.

Lets hope OCZ can come up with a better controller in their next generation MLC SSDs. We really need the competition here to bring those prices down, the Intel drive is a tad too expensive atm imo. Reply