Both wear leveling techniques rely on the availability of free sectors that can be filled up with the updates: as soon as the number of free sectors falls below a given threshold, sectors are “compacted” and multiple, obsolete copies are deleted. This operation is performed by the Garbage Collection module, which selects the blocks containing the invalid sectors, it copies the latest valid content into free sectors, and then erases such blocks (Fig. 1.5).
In order to minimize the impact on performances, garbage collection can be performed in background. The aging uniformity driven by wear leveling distributes wear out stress over the whole array rather than on single hot spots. Hence, given a specific
workload and usage time, the bigger the memory density, the lower the wear out per cell.
Bad Block Management
No matter how smart the Wear Leveling algorithm is, an intrinsic limitation of NAND Flash memories is represented by the presence of the so-called Bad Blocks (BB), i.e. blocks which contain one or more locations whose reliability is not guaranteed. The Bad Block Management (BBM) module creates and maintains a map of bad blocks, as shown in Fig. 1.6: this map is created in the factory and then updated during SSD’s lifetime, whenever a block becomes bad.
Error Correction Code (ECC)
This task is typically executed by a hardware accelerator inside the memory controller. Examples of memories with embedded ECC were also reported. Most popular ECC codes, correcting more than one error, are Reed-Solomon and BCH.
NAND raw BER gets worse generation after generation approaching, as a matter of fact, the Shannon limit. As a consequence, correction techniques based on soft information processing are becoming more and more popular: LDPC (Low Density Parity Check) codes are an example of this soft information approach. Chapter 4 provides details about how these codes can be handled by SSD simulators.
SSD’s Interfaces
There are 3 main interface protocols used to connect SSDs into server and/or storage infrastructure: Serial Attached SCSI (SAS), Serial ATA (SATA) and PCI-Express. PCI-Express based SSDs deliver the highest performances and are mainly used in server based deployments as a plug-in card inside the server itself. SAS SSDs deliver pretty good level of performances and are used in both high-end servers and midrange and high-end storage enclosures. SATA based SSDs are used mainly in client applications and in entry-level and mid-range server and storage enclosures.