I know that to avoid corruption and damage, SSDs are only erased in increments of entire blocks. But how does that not damage adjacent cells? Why energy-intensive tunneling inhibition isn't necessary when you're whacking a whole bunch of cells at the same time?
Electronic – Why erasing SSDs in increments of entire blocks does not damage adjacent cells
flashssd
Related Solutions
If you don't wipe them all at the same time, you'll need a much higher voltage because you're trying to raise the floating gate voltage a certain voltage above the source voltage. If the source isn't tied to ground through the other transistors, many of the source voltages will already be at some level higher than ground. Furthermore, if you tried to use a higher voltage, some of that voltage would likely end up on some transistors with their sources tied to ground which may be enough to damage the transistor.
Three reasons really - TLDR: Reliability, and Compatibility
- SSDs use 1.8V in their logic circuits to prevent interference.
AFAIK, The 12V level for programming and erasing applies to NOR flash cells, I'm not certain what the voltage level for NAND and VNAND flash is, as they use a different method to program and erase data. (Why does NAND erase only at block-level and not page level?). The voltage MUST be higher than Vccq, but not necessarily 12V.
- Flash Cells are unreliable, and must use a controller to be usable.
An SSD is just Flash Cells with a controller that emulates a hard drive. By directly piping in a 12V line past the controller to the logic side of the device, you're really playing with fire. Flash memory is basically designed to fail predictably, and the controller is always maintaining the device, cleaning up messes, and sanitizing data streams. While the proper voltage rail could be supplied from the power input, it's more reliable to use localized voltage regulation within the controller's circuit space.
- and finally, even modern computers don't have reliable voltage rails
The motherboard has a lot of voltage regulators itself because of this to provide clean power levels to the more sensitive components of the motherboard. Many PSUs have a limited number of 12V rails, and quite often on cheaper models there will be only 1. This can cause voltage dips as well as surges, the most I've seen in practice is 12V ±1V, but flash cells are extremely sensitive to voltage levels, and relying on external power regulation could end in disaster should something jump on/off the same rail and pull the voltage up or down. This would actually be common since an erase or write operations mean the computer is busy and will be pulling additional power compared to idle.
Best Answer
It's not to avoid corruption or damage. Erasing in blocks is part of the definition of flash memory. Flash memory is descended from EEPROMs -- EEPROM + block erase = flash. There are a few reasons why this is good:
The mechanism used for erase (Fowler-Nordheim tunneling) is slow. In NOR flash, it's possible to use much faster mechanisms for programming like hot electron injection. We're talking microseconds vs. hundreds of milliseconds, a factor of ~100,000. In NAND flash, F-N tunneling is used for word programming as well, but at least one operation is faster.
Conceptually, erasing is more likely to be a block operation anyway. This is true for microcontrollers (where "re-flashing" means a full erase/reprogram), as well as SSDs (you can append data to a file one byte at a time, but deleting the file removes all of the data at once). Overwriting only a little data in an existing file is much less common.
Erase uses high voltages, so erasing in blocks requires less die area to implement bit- or word-selective switching. This is also true for programming, but you have to have bit-selective programming, so there's no way around it.
If you post a source, I can comment more on issues of corruption and damage. F-N tunneling does cause long-term oxide damage, which slows down erasing (and programming in NAND flash). It's also possible for a program or erase operation to corrupt ("disturb") nearby bits. Finally, in stacked-gate flash transistors, it's possible for over-erasure to cause corrupt reads, but I don't know how common that is in NAND flash.
EDIT: The Ars Technica article you linked to contains the following paragraph:
I've only worked on NOR flash, so I can't say for sure whether there's something special about NAND flash that causes erase to be harmful. This presentation from Micron suggests that erase is done in blocks because the erase voltage is applied to the P-well, and having a separate P-well for each transistor string would take up too much space. As you can see in the presentation, inhibition is used for programming, and has the same problems that are mentioned in the Ars Technica article. The erase and program voltages are similar, as one would expect. I suspect the Ars writer got confused about the significance of these points:
I doubt that erase inhibition would be any more harmful than program inhibition, and they'd probably balance each other out anyway. But selectable erase with inhibition would take up more die space, and thus drive up the price. Given that flash memory was around long before NAND SSDs, any quality improvement from block erase would be a happy accident, not a modern design choice.
Again, I've only worked on NOR flash, so if there's anyone out there with NAND experience, please feel free to chime in.