4.1.10Memory Technologies

Multi-level cell (MLC - TLC - QLC) flash

1,955 words9 min readdifficulty · medium1 backlinks

WHAT is a multi-level cell?

Name Bits/cell bb Levels L=2bL=2^b Relative density
SLC (Single) 1 2
MLC (Multi, means 2) 2 4
TLC (Triple) 3 8
QLC (Quad) 4 16
PLC (Penta) 5 32

WHY does packing bits get exponentially harder?

The whole usable window is a fixed voltage span ΔVwindow\Delta V_{window} (limited by physics: how much charge the tiny floating gate can hold and how high a read voltage the periphery tolerates). We must fit LL distributions of VthV_{th} into it, plus L1L-1 guard bands to tell them apart.

Figure — Multi-level cell (MLC - TLC - QLC) flash

HOW do we read multiple bits? (Gray coding)

Example TLC Gray assignment (3 bits over 8 levels): 000 → 001 → 011 → 010 → 110 → 111 → 101 → 100 Every neighbour differs by exactly one bit.


Worked examples


Common mistakes


What physical quantity does a flash cell actually store to represent data?
Charge on the floating gate, which shifts the transistor threshold voltage VthV_{th}.
How many bits does MLC (as an industry term) store per cell?
2 bits (4 levels) — not "any multi-bit cell".
Relationship between bits/cell bb and levels LL?
L=2bL = 2^b, i.e. b=log2Lb = \log_2 L.
Why divide the window by L1L-1 for level spacing?
LL level centres create L1L-1 gaps between them (fencepost rule).
How much more crowded are QLC levels than SLC?
About 15× ((241)/(211)=15/1(2^4-1)/(2^1-1) = 15/1).
Why use Gray coding for level-to-bit assignment?
Adjacent (most-confusable) levels differ by only one bit, so a misread flips just one bit — minimal, ECC-friendly damage.
Order SLC/MLC/TLC/QLC by endurance, high to low.
SLC > MLC > TLC > QLC (roughly 105>104>3×103>10310^5 > 10^4 > 3{\times}10^3 > 10^3 P/E cycles).
Why is QLC write slow, and what mitigates it?
Tight target distributions need many ISPP verify pulses; an SLC cache absorbs bursts, migrating to QLC later.
What does packing more bits do to reliability and why?
Smaller voltage margin between levels → overlapping VthV_{th} smears → more raw bit errors → needs stronger ECC (LDPC).

Recall Feynman: explain to a 12-year-old

Imagine a bucket that holds water, and you read the data by looking at the water level. If you only ask "empty or full?" you store 1 fact — that's SLC, easy and reliable. But you could instead mark the bucket with lines (empty, ¼, ½, ¾, full) and store more facts by pouring exact amounts — that's TLC/QLC. Problem: the lines get super close together, and water sloshes and slowly leaks. Now it's hard to tell "½ line" from "just above ½." So you can store more, but you make more reading mistakes and the bucket wears out faster from all the careful pouring. That's the whole trade: more storage vs. more errors and less durability.

Connections

  • NAND Flash Architecture — pages, blocks, floating-gate transistor.
  • Threshold Voltage and ISPP Programming — how levels are written precisely.
  • Error Correction Codes (LDPC/BCH) — cleans up the raw errors MLC/TLC/QLC create.
  • Wear Leveling and Flash Endurance — managing limited P/E cycles.
  • SLC Cache and SSD Write Amplification — speed mitigation for QLC.
  • Gray Code — the encoding that minimizes bit-flip damage.

Concept Map

shifts

slice into L levels

b = log2 L

more bits

holds L levels + L-1 guard bands

L = 2^b

dV = window / 2^b-1

smaller dV

misclassified reads

need

reliability and speed fall

Floating gate charge

Threshold voltage Vth

Multi-level cell

Bits per cell

Higher density per dollar

Fixed voltage window

Level spacing dV

Margin shrinks exponentially

Bell-curve smears overlap

Raw bit errors

Stronger ECC LDPC and retries

SLC over MLC over TLC over QLC tradeoff

Hinglish (regional understanding)

Intuition Hinglish mein samjho

Dekho, flash memory ka ek cell asal mein ek analog cheez hai — usme floating gate par charge store hota hai, aur us charge ki wajah se transistor ka threshold voltage VthV_{th} shift ho jaata hai. SLC me hum sirf poochte hain "charge hai ya nahi?" — matlab 2 levels, 1 bit. Lekin agar hum voltage range ko zyada tukdon me kaat dein, to ek hi cell me zyada bits aa sakte hain. MLC = 2 bits (4 levels), TLC = 3 bits (8 levels), QLC = 4 bits (16 levels). Formula simple hai: L=2bL = 2^b.

Ab problem yeh hai ki total voltage window fixed hai. Usme jitne zyada levels ghusaoge, do padoswale levels ke beech ki margin utni kam hoti jaayegi — spacing δVΔVwindow/(2b1)\delta V \approx \Delta V_{window}/(2^b - 1). QLC me yeh margin SLC se lagbhag 15 guna chhoti ho jaati hai. Har level ek sharp point nahi, balki ek bell-curve smear hota hai (programming noise aur charge leakage ki wajah se). Jab margin choti ho jaati hai to yeh smears overlap karne lagte hain, aur read galat ho jaata hai — matlab zyada errors.

Isliye density (zyada bits, sasta storage) ke badle me hume reliability aur speed ki keemat chukani padti hai. QLC ka endurance (P/E cycles) kam hota hai kyunki thoda sa oxide wear bhi levels ko overlap karwa deta hai. Writes slow hote hain kyunki ISPP me baar-baar pulse-verify karna padta hai — isiliye SSDs SLC cache rakhte hain taaki pehle tez SLC mode me likhein aur baad me QLC me shift karein. Aur ek smart trick: Gray coding — padoswale levels sirf ek bit se alag hote hain, taaki ek galat read se sirf ek hi bit flip ho aur ECC (LDPC) usse aasani se theek kar de. Yaad rakho: jaise-jaise bits badhte hain, quantity badhti hai par quality girti hai.

Go deeper — visual, from zero

Test yourself — Memory Technologies

Connections