Visual walkthrough — Multi-level cell (MLC - TLC - QLC) flash
We assume you have never seen a logarithm, a bell curve, or the word "threshold." Every symbol is earned before it is used.
Step 1 — What is actually stored: charge → a voltage
WHAT: We put some number of electrons onto that island. WHY: trapped charge changes how easily the transistor turns on. The voltage you must apply to the outside gate to make current flow is called the threshold voltage — think of it as "how hard you have to push to switch the cell on."
PICTURE: More electrons on the island push higher. So charge becomes a voltage number we can measure. That is the whole trick — an analog knob.

- — the charge (number of electrons) on the floating gate; our input knob.
- — the threshold voltage it produces; our readable output.
Step 2 — The playground has a fixed fence: the voltage window
WHAT: cannot be any value we like. There is a lowest usable value (empty gate, call it ) and a highest usable value (gate stuffed as full as physics and the read circuitry allow, ).
WHY this matters: the useful span
- — the total width of the playground, in volts. The Greek ("delta") just means "difference / span."
- — the top and bottom fences.
This width is fixed by the silicon. We do not get more room by wanting more bits. Every level we invent must fit inside this same fence. Hold that thought — it is the source of all the pain later.
PICTURE: a horizontal voltage axis with two walls. Everything from here lives between those walls.

Step 3 — Slice the window into levels; count the bits
WHAT: Instead of asking "gate empty or full?" (2 states), we agree on distinct target voltages inside the window — call them levels. Each level is a codeword.
WHY enters here — and not some other tool: we need to answer "how many yes/no facts (bits) does choosing 1-of- levels carry?" One bit is one yes/no choice, which splits possibilities in half. Two bits give choices, three bits give . So bits select among things:
- — number of levels (choices).
- — number of bits per cell.
- the — because each bit doubles the count (binary = two options each).
To go the other way — "given levels, how many bits?" — we need the function that undoes raising 2 to a power. That undoer is ("log base two"), literally the question "2 to what power gives ?":
That is the only reason a logarithm appears: it is the inverse of the doubling.
PICTURE: the window from Step 2, now cut by evenly spaced tick marks. 2 ticks = SLC (1 bit), 4 = MLC (2 bits), 8 = TLC (3 bits), 16 = QLC (4 bits).

Recall Check the log
::: , because — TLC stores 3 bits.
Step 4 — Fenceposts: why the spacing divides by , not
WHAT: We want the spacing between two neighbouring level centres.
WHY : place dots along a line. The gaps between them number one fewer than the dots. 2 fences → 1 gap; 4 fenceposts → 3 gaps. This is the fencepost rule. The level centres are the posts; the spacings are the gaps. The bottom post sits at , the top post at , and the whole window is split into equal pieces:
- — voltage gap between adjacent level centres; the "breathing room."
- — the number of gaps (fencepost rule, then substituted).
PICTURE: four posts, three labelled gaps — literally count them so the is undeniable.

Step 5 — Crank the handle: how collapses SLC→QLC
WHAT: plug into and read off the gap counts.
| Type | gaps | share | ||
|---|---|---|---|---|
| SLC | 1 | 2 | 1 | |
| MLC | 2 | 4 | 3 | |
| TLC | 3 | 8 | 7 | |
| QLC | 4 | 16 | 15 |
WHY exponential, not linear: each extra bit doubles , so the denominator roughly doubles too (). The gap does not shrink by a fixed subtraction — it shrinks by a factor each step. Comparing the extremes: QLC's breathing room is ~15× narrower than SLC's.
PICTURE: four stacked axes (SLC, MLC, TLC, QLC), same total width, the tick marks visibly jamming together as you descend.

Step 6 — Levels are smears, not points (the reliability twist)
WHAT: a programmed level is never one exact voltage. Program noise, cell interference, and slow charge leakage spread it into a bell-curve smear — a hump centred on the target, wide at the base.
WHY this is the whole story: reading means "is above or below a reference line placed in the gap?" If two neighbouring smears overlap, some cells land on the wrong side and read as the wrong level → a raw bit error. Fixed smear width, shrinking ⇒ overlap grows fast.
PICTURE: SLC — two fat humps with a wide moat between them (no overlap). QLC — sixteen humps shoulder-to-shoulder, skirts overlapping (shaded error region). This is why Error Correction Codes (LDPC/BCH) and read retries are mandatory for TLC/QLC, and why Threshold Voltage and ISPP Programming fights to keep each smear as thin as possible.

Step 7 — Degenerate & edge cases (never leave the reader stranded)
PICTURE: three mini-panels — the single-gap window, the single-post "nothing", and the PLC smears fully merged into mush.

Step 8 — Label the levels smartly: Gray code
WHAT: once we have levels we must name each with a bit pattern. The obvious plain-binary order () sometimes flips two bits between neighbours (e.g. ).
WHY Gray code: the most likely misread is into an adjacent level (skirts touch). If we order the codes so adjacent levels differ in exactly one bit, a one-level slip costs only one flipped bit — the smallest, easiest-for-ECC damage. See Gray Code.
TLC Gray order (each neighbour differs by one bit):
000 → 001 → 011 → 010 → 110 → 111 → 101 → 100
PICTURE: eight TLC levels along the axis, Gray labels underneath, the single changing bit highlighted between each pair.

The one-picture summary
Everything at once: charge sets (Step 1) inside a fixed window (Step 2); we slice it into levels (Step 3); the fenceposts leave gaps so (Step 4–5); each level is a smear, and shrinking makes smears overlap → errors (Step 6); Gray labels keep a slip to one bit (Step 8).

Recall Feynman retelling of the whole walkthrough
Picture a shelf of fixed length (the voltage window). You want to mark spots on it and read data by which spot a marble rolled to. If you mark just 2 spots (SLC), they're far apart — even a shaky hand still lands you clearly on one. Mark 16 spots (QLC) on the same shelf and they're jammed together; the marble's wobble (the smear) means it often lands between two spots and you can't tell which you meant. Counting spots: yes/no marks give spots, and reading spots back is . The gaps between spots number one fewer than the spots (fencepost), so each gap gets of the shelf — that's why 16 spots feel 15× tighter than 2. Since the wobble stays the same size, tighter spots = more mistakes, so you add spell-check (ECC) and label the spots in Gray order so a one-spot slip is a one-letter typo, not two. More storage, more mistakes, more effort — the eternal flash bargain.
Connections
- NAND Flash Architecture — where the floating gate physically lives.
- Threshold Voltage and ISPP Programming — how each smear is placed tightly.
- Error Correction Codes (LDPC/BCH) — cleans the overlap errors of Step 6.
- Wear Leveling and Flash Endurance — wear widens the smears over time.
- SLC Cache and SSD Write Amplification — the speed workaround.
- Gray Code — the labelling of Step 8.