I worked at an embedded startup when SD cards started switching to MLC and we saw a really notable decrease in storage reliability. We ended up sourcing special SD cards that were flashed with embedded controller firmware restoring them to single level cell functionality. Your storage space is divided by 2^n going from n levels of voltage per cell back to SLC, but we saw greatly increased data integrity.
Yes, I'm explaining it with high and low voltage because that's an easy example to wrap your head around if you haven't thought about signal processing or hardware engineering before.
it's not that bad, it's divided by log2(n).
Yes.
> It's none other than planned obsolescence.
What makes you say this?
Even products that are built for a long lifetime of heavy use only sometimes need to drop down to MLC. Most servers and basically any consumer devices are fine with TLC.
Lack of SLC is not making drives die early.
Even on those 4-5 bit devices, the impact on performance tends to be a bigger deal than the impact on endurance. And there's no great push to get people onto those drives. TLC drives get most of the attention.
It’s not arbitrary, it’s an engineering choice. It’s just easier to design binary circuits.
"With the advent of mass-produced binary components for computers, ternary computers have diminished in significance. However, Donald Knuth argues that they will be brought back into development in the future to take advantage of ternary logic's elegance and efficiency."
(Wikpedia article on ternary computer(s), https://en.wikipedia.org/wiki/Ternary_computer, Donald Knuth's observation is found in The Art of Computer Programming.)
We could have three states - "high voltage", "medium voltage" and "low voltage" - but the advantage of having exactly two is that it makes it harder to mistake one state for another (e.g. if voltage fluctuates within a specific range). If the measurement range for each datum is (0, 100), you can decide that anything below 50 is "low voltage" and anything below 100 is "high voltage". You can also do the same thing with (0,33), <33,66), <66,100), but that requires assuming more precise tools throughout the entire pipeline. When we talk about bits getting flipped (the entire reason that checksums exist in wire protocols), that's the reason: the medium conducting the signal is imprecise, and sometimes the reading is off.
Traditionally, this represents a tradeoff between density and fidelity. If your system has high enough fidelity, you can take advantage of the additional precision and distinguish between more states, representing additional information.
If your system has 8 states (0,8.3), <8.3, 16.6)... etc., you can look at this as an octal system, or you can think of it as a binary system in which a read/write error affects an entire byte, rather than a single bit.
At the end of the day, this is a question of signal processing - binary representation is a convenient abstraction that allows us to understand the way that we're interpreting the signals we're reading, but it's fundamentally an arbitrary choice.