3 ms·
This is a bit of a misrepresentation. The only flash that never had ECC was NOR. Some embedded systems had NOR, but I'd be incredibly rare to find a consumer SS
by russdill 8y ago
This is a bit of a misrepresentation. The only flash that never had ECC was NOR. Some embedded systems had NOR, but I'd be incredibly rare to find a consumer SSD with NOR.
When designing a NAND memory product, you aim for some max allowed error rate. You choose the error correction algorithm based on that target. Error rates for NAND products are precisely what the designer intended.
Because SSDs are so large and there is such a large number of them, errors can still occur (at a known rate). FTLs should take that into account. Critical data structures can add checksum redundancy which can reduce the error rate for those to an even lower value, which is usually necessary anyway since power disturbances during erase or program can cause programming errors.
There are of course a number of patterns that increase error rates that FTLs have to be programmed to prevent. Encrypting is the first important step, since it makes the data unlikely to be uniform. The second is mitigating read disturb.
- russdill 8y agoOh, and as someone noted below, spinning disks have also long had error correction in order to reach some target error rate.
- pkaye 8y agoI don't mean to imply NAND flash never had ECC. Just that the early flash had needed maybe 1-3 bits of ECC and I would never see an 1-bit error until maybe a few months of use. Things were a lot easier back then. Scrambling and read disturbs were not a issue until later on. All the things you suggest can be done. Just so many opportunities to screw up in the implementation despite the best efforts.