Essentially, all flash devices consist of large arrays of varying types of floating gate transistors. I don’t propose to go into the specifics of how they operate here, so if you really want to know, you’ll find plenty about them on Wikipedia. In essence, though, you can think of the storage part (the gate) of each flash cell as a bucket to keep electrons in.
At school, I am sure that you learnt that computers and other digital equipment work on the basis of binary. This is almost exclusively true – except where flash memory is concerned. The very principle of MLC flash is that it allows the storage of two bits (ie numbers 0-3) in each cell as opposed to just one (binary – 0 and 1). How is this achieved? Let’s have another look at those buckets from earlier.
If we’re storing a binary value in a bucket, we’re essentially asking whether the bucket is full or not. If it’s full, it’s a 1, if empty it’s a 0. Over time, a cell might drift by gaining or losing electrons – essentially the equivalent of our bucket developing a slow leak or being rained on. Let’s say that the bucket after 3 weeks is 70% full. Is that a 0 or a 1? We can reasonably guess it’s a 1 as 70% is closer to 100% than to 0%.
With MLC, we’re storing four different levels in one bucket and therefore the margin for error is reduced – 70% full now equates to a value of 2 (or 10 in binary…). Therefore the ECC functions on the flash chip become much more important and the potential for corruption is much higher. It’s also much slower to see the value of a two bit gate – using our bucket analogy, it’s quicker to glance and see whether something is full or not, or empty, got a bit of water in it, quite full or full*.
MLC flash is a lot cheaper for the simple reason that it therefore has half the number of gates and therefore more chips can be made on a single die. As you can see from above, there is a significant tradeoff for this reduction in cost – reduced reliability and slower speeds .
Reductions in die size with CPUs and other processors has resulted in a significant increase in speed. With flash it’s had more or less the opposite effect. Using our bucket analogy, we’re talking about smaller and smaller buckets of water and therefore there are smaller and smaller differences in amount of water for each value. That means that for instance half an inch of rain might be an entire value difference as opposed to a tenth of one in a bigger bucket.
Now, we’re beginning to see TLC or Three Bit Flash hit the market – storing values 0-7 in each cell. Every single one of the problems above is maginified by a factor of two! That’s why we’re currently avoiding TLC products and will continue to do so until stability and reliability are considerably improved.
* a fairer analogy to how flash actually works would be to imagine the bucket sat on a lever that allowed varying amounts of water through a pipe depending on the weight of the water in the bucket…
Tagsactivation banks buckets chipkill configurator dimm dip double dutch double sided downgrade ECC edo facet search flash fully buffered hamming code memory memory express mlc multi level cell notches parity Printer Memory product data ranks search server memory simm single sided sip sipp slc sodimm software terminology tlc flash windows xp