Member-only story
SSD Firmware Development — Part 2 — NAND Basics
Before we dive straight into SSD firmware development, let’s in simple terms, define what an SSD is. An SSD is simply a digital storage device that mainly uses flash memory as the primary storage medium. The flash memory used is most predominately NAND flash. An SSD will also have a controller, which at a minimum includes one or more CPU’s, specialized hardware to work with flash memory, volatile memory (RAM), and hardware to interface with host protocols such as SATA, USB, and NVMe. Other hardware components may be available on more advanced controllers.
Figure 1 — Simple SSD architecture
NAND Flash Memory
Since NAND flash memory is the cornerstone of an SSD, an understanding of NAND flash and how they work is essential to develop firmware and understand why firmware is even necessary. NAND flash technology changes and progresses with newer innovations, but they all possess some basic characteristics and operations in which we can explore.
NOTE: We’ll first cover typical 2D NAND. With 3D NAND, things are a bit different.
NAND devices are typically organized in arrays of bit cells. With single-level cell (SLC), each cell can store 1 bit of information. The cells are arranged in rows and columns.







