One of the thorniest issues in SSD design how to manage erasing blocks that are no longer in use. That’s saying a lot, because NAND flash presents so very many difficult challenges like wear leveling, bad block management, error correction, and write amplification.
The difficulty stems from the fact that all of today’s software was written for HDDs which don’t behave like the flash in an SSD. An HDD can over-write existing data with new data. In a flash SSD, a block must be erased before being over-written and this can take a half a second – a huge amount of time in the world of computing. Since the software doesn’t accommodate flash’s “erase-before-write” needs, the controller inside the SSD must take care of this bit of housekeeping. Unused and unerased blocks are moved out of the way and erased in the background. This is called the “garbage collection” process. Continue reading