Remix.run Logo
sevensor a day ago

Flash is programmed by increasing the probability that electrons will tunnel onto the floating gate and erased by increasing the probability they will tunnel back off. Those probabilities are never zero. Multiply that by time and the number of cells, and the probability you don’t end up with bit errors gets quite low.

The difference between slc and mlc is just that mlc has four different program voltages instead of two, so reading back the data you have to distinguish between charge levels that are closer together. Same basic cell design. Honestly I can’t quite believe mlc works at all, let alone qlc. I do wonder why there’s no way to operate qlc as if it were mlc, other than the manufacturer not wanting to allow it.

55873445216111 a day ago | parent | next [-]

All the big 3D NAND makers have already switched from floating gate to charge trapping. Basically the same as what you describe but basically the electrons get stuck in a non-conductive region instead of on an insulated gate.

GCUMstlyHarmls 15 hours ago | parent | next [-]

> The grand artificers of the Unseen University—those who insist on calling themselves “makers” despite mostly making trouble—gave up on the old Floating Gate enchantments ages ago. Too fiddly, too explosive, and prone to drifting off when no one was looking. Now they use Charge Trapping. Same idea in principle: coax a few errant lightning-spirits into doing something useful. But instead of perching them on a precariously insulated sigil like nervous pigeons, the wizards now shove the little blighters into a quiet, rubbery pocket of reality where they can’t conduct, escape, or start a small civil war. Everyone agrees it’s much safer, except for the pocket.

~ Terry Pratchett's Disklessworld, book 8. (Re: Any sufficiently advanced technology is indistinguishable from magic)

sevensor 13 hours ago | parent | prev [-]

Cool! I’ve been out of the industry for over a decade now, so my process knowledge is a little quaint at this point.

Someone a day ago | parent | prev | next [-]

> I do wonder why there’s no way to operate qlc as if it were mlc, other than the manufacturer not wanting to allow it.

You can run an error-correcting code on top of the regular blocks of memory, storing, for example (really an example; I don’t know how large the ‘blocks’ that you can erase are in flash memory), 4096 bits in every 8192 bits of memory, and recovering those 4096 bits from each block of 8192 bits that you read in the disk driver. I think that would be better than a simple “map low levels to 0, high levels to 1” scheme.

userbinator a day ago | parent | prev | next [-]

I do wonder why there’s no way to operate qlc as if it were mlc, other than the manufacturer not wanting to allow it.

There is a way to turn QLC into SLC: https://news.ycombinator.com/item?id=40405578

sevensor a day ago | parent [-]

Thanks! I missed this the first time around!

bobmcnamara a day ago | parent | prev | next [-]

> I do wonder why there’s no way to operate qlc as if it were mlc, other than the manufacturer not wanting to allow it.

Loads of drives do this(or SLC) internally. Though it would be handy if a physical format could change the provisioning at the kernel accessible layer.

em500 a day ago | parent | prev | next [-]

> Honestly I can’t quite believe mlc works at all, let alone qlc. I do wonder why there’s no way to operate qlc as if it were mlc, other than the manufacturer not wanting to allow it.

Manufacturers often do sell such pMLC or pSLC (p = pseudo) cells as "high endurance" flash.

testartr a day ago | parent | prev | next [-]

the market demands mostly higher capacity

tlc/qlc works just fine, it's really difficult to consume the erase cycles unless you really are writing 24/7 to the disk at hundred of megabytes a second

tcfhgj a day ago | parent [-]

I have a MLC SSD with TBW/GB much higher than the specified TBW/GB guarantee of usual qlc SSDs

tensility 12 hours ago | parent | prev [-]

At the physical device layer (i.e. what a nand controller vendor programs to), a nand flash device that supports ONFI 2 SLC Mode can be configured to use (some of) its blocks in SLC mode rather than MLC/TLC/QLC/etc. This allows one to divide the array into high-reliability versus high-capacity regions.