MicroSD Card Data Integrity and Failure

MicroSD cards are based on NAND flash technology. They are composed of a controller and the NAND flash cells. The controller stores data by programming the NAND cells to a certain voltage.

Flash cells are what fundamentally hold your data. You can think of them as reservoirs that hold electric charge. The more electric charge, the higher the voltage. A controller goes to each of these flash cells and checks the electric charge level to determine whether it is holding not enough charge, 0 state, or sufficient charge, 1 state. This is the basis of single level cell (SLC) flash where each cell stores 1 bit. Programming SLC is relatively quick since you can just make sure it is above or below a certain threshold voltage.

More modern flash controllers introduced the capability of reading the levels more accurately and provdes the capability of programming and extracting more than 1 bit per cell. These are called multi level cell (MLC) devices. Instead of just one threshold voltage, it creates 4 levels with their own thresholds and divides the charge levels between these four thresholds allowing each cell to double the bit carrying capacity. Subsequently, triple and quadruple level cells were introduced to further increase data density at the expense of read/programming time for accurate level getting/setting.

As we mentioned before, flash cells are electric charge reservoirs. They can leak electric charge due to the natural environment and time. This is especially true with heat which can cause rapid leakage of electric charge. What this means is that the levels are no longer the same over time. When the controller reads the levels, it’s going to get a different result than when it was originally programmed. Thus the data is lost to entropy. This is why NAND is not as suitable for long term storage as magnetic hard drives and CDs were. The data simply disappears over time especially when the device is powered off.

Modern advanced controllers would periodically re-read and re-program the flash cell levels if the device was consistently powered on to make sure that the data isn’t lost over time but this introduce software complexity and costs on the controller manufacturers. It’s not possible to tell which manufacturer spends the R&D to do these advanced error mitigation functions. Another method of mitigating the data loss is to put error correction coding (ECC) on the flash cells. If there is a limited amount of data degradation, the ECC can correct up to the limit of the coding algorithm’s information loss limit. Again, this also introduces complexity and cost on the part of the controller.