4.1.10 · Hardware › Memory Technologies
Ek flash memory cell actually ek analog device hai: yeh floating gate pe charge store karta hai, aur woh charge transistor ki threshold voltage V t h ko shift karta hai. Yeh poochne ki jagah ki "charge hai ya nahi?" (1 bit), hum poochte hain "kitna charge hai?" aur voltage range ko kaafi saare levels mein slice karte hain. Tab ek cell ek se zyada bit hold kar sakta hai. Jitne zyada levels same silicon mein squeeze karo = utni zyada capacity per dollar — lekin levels aapas mein kaafi paas aa jaate hain, isliye reliability aur speed ekdum gir jaati hai.
Ek cell mein store kiye gaye bits ki sankhya, distinguishable charge (voltage) states ki sankhya ka log 2 hoti hai:
b = log 2 L ⟺ L = 2 b
jahan L = programmed voltage levels ki sankhya, b = bits per cell.
Naam
Bits/cell b
Levels L = 2 b
Relative density
SLC (Single)
1
2
1×
MLC (Multi, matlab 2)
2
4
2×
TLC (Triple)
3
8
3×
QLC (Quad)
4
16
4×
PLC (Penta)
5
32
5×
Common mistake Steel-man: "MLC ka matlab sirf many levels hai, toh TLC ek tarah ka MLC hai"
Yeh sahi kyun lagta hai: literally, "multi-level" ka matlab hona chahiye koi bhi cell jisme >1 bit ho. Fix yeh hai: industry jargon mein MLC specifically = 2 bits/cell (4 levels) . TLC aur QLC ko explicitly naam diya gaya hai. Toh "MLC" ek historical naam hai, na ki ek general category. Ise ek proper noun ki tarah padho.
Poora usable window ek fixed voltage span Δ V w in d o w hoti hai (physics se limited: itna charge chhoti floating gate hold kar sakti hai aur periphery kitna high read voltage tolerate karta hai). Hume is mein L distributions of V t h fit karni hain, saath mein L − 1 guard bands bhi taaki unhe alag pehchana ja sake.
Intuition Crowding reliability kyun khatam karta hai
Har level ek sharp voltage nahi hai — yeh ek bell-curve smear hoti hai (program variation, charge leakage, cell-to-cell interference se). Agar do neighbouring smears overlap karti hain, toh ek read bit ko galat classify karta hai. Chhoti δ V + same smear width ⇒ zyada overlap ⇒ zyada raw bit errors ⇒ stronger ECC (LDPC) aur zyada read retries ki zaroorat.
Definition Read = threshold comparisons
L levels resolve karne ke liye aap read reference voltages ka ek sequence apply karte ho aur check karte ho "kya V t h upar hai ya neeche?". L levels ko distinguish karne ke liye worst case mein L − 1 reference comparisons chahiye hote hain.
Intuition Levels ko Gray code kyun karte hain
Adjacent voltage levels woh hoti hain jo confuse hone ki sabse zyada sambhavna rakhti hain (unki smears touch karti hain). Agar hum bit patterns is tarah assign karein ki adjacent levels sirf ek bit mein differ karti hain (ek Gray code ), toh ek-level misread sirf ek bit flip karta hai — minimum possible damage, aur ECC ke liye fix karna sabse aasaan.
TLC Gray assignment ka example (3 bits over 8 levels):
000 → 001 → 011 → 010 → 110 → 111 → 101 → 100
Har neighbour exactly ek bit se differ karta hai.
Worked example 1 — TLC ke liye kitne levels aur margin?
Diya hai b = 3 , window Δ V w in d o w = 4.2 V .
Levels: L = 2 3 = 8 . Kyun? b = log 2 L .
Gaps: L − 1 = 7 . Kyun? fencepost rule.
Margin: δ V = 4.2/7 = 0.6 V . Kyun? gaps mein even split.
Worked example 3 — Endurance collapse (order-of-magnitude)
Typical program/erase (P/E) endurance:
SLC ~1 0 5 , MLC ~1 0 4 , TLC ~3 × 1 0 3 , QLC ~1 0 3 cycles.
Yeh kyun girta hai? Erasing electrons ko oxide ke through tunnel karta hai, usse slowly damage karta hai aur smear ko wider karta hai. QLC pehle se almost zero margin ke saath start karta hai, toh thodi si bhi oxide wear smears ko overlap mein push kar deti hai kaafi pehle → kam safe cycles.
Worked example 4 — Program time
Ek tighter distribution program karne ke liye incremental step pulse programming (ISPP) chahiye: pulse apply karo, verify karo, repeat karo. Zyada levels → tighter target → zyada verify iterations → slower writes. QLC writes SLC se kaafi gunah slow hain, isliye drives ek SLC cache rakhti hain (SLC mode mein fast likhte hain, baad mein QLC pe migrate karte hain).
Common mistake "Bits/cell double karna margin loss bhi double karta hai"
Sahi lagta hai: linear intuition. Fix: margin ∝ 2 b − 1 1 — yeh b mein exponential hai. 3→4 bits jaana margin ko 1/7 se 1/15 kar deta hai, aadhe se bhi zyada, na ki ek fixed subtraction.
Common mistake "Zyada bits/cell → zyada read reference voltages, toh reads hamesha proportionally slow hote hain"
Sahi lagta hai: zyada comparisons. Fix: dominant slowdowns write/erase (ISPP) aur error correction/retry hain, raw comparison count nahi. Reads mostly slow hoti hain ECC retries ki wajah se jab margins tight hoti hain.
Ek flash cell data represent karne ke liye actually kaunsi physical quantity store karta hai? Floating gate pe charge, jo transistor threshold voltage V t h ko shift karta hai.
MLC (industry term ke roop mein) kitne bits store karta hai per cell? 2 bits (4 levels) — "koi bhi multi-bit cell" nahi.
Bits/cell b aur levels L mein kya relationship hai? L = 2 b , yani b = log 2 L .
Level spacing ke liye window ko L − 1 se kyun divide karte hain? L level centres L − 1 gaps banate hain unke beech (fencepost rule).
QLC levels SLC se kitne zyada crowded hain? Lagbhag 15× (( 2 4 − 1 ) / ( 2 1 − 1 ) = 15/1 ).
Level-to-bit assignment ke liye Gray coding kyun use karte hain? Adjacent (sabse zyada confusable) levels sirf ek bit se differ karti hain, toh ek misread sirf ek bit flip karta hai — minimal, ECC-friendly damage.
SLC/MLC/TLC/QLC ko endurance ke hisaab se high se low order karo. SLC > MLC > TLC > QLC (roughly 1 0 5 > 1 0 4 > 3 × 1 0 3 > 1 0 3 P/E cycles).
QLC write slow kyun hoti hai, aur ise kya mitigate karta hai? Tight target distributions ko kaafi ISPP verify pulses chahiye; ek SLC cache bursts absorb karta hai, baad mein QLC pe migrate karta hai.
Zyada bits pack karna reliability ko kya karta hai aur kyun? Levels ke beech chhota voltage margin → overlapping V t h smears → zyada raw bit errors → stronger ECC (LDPC) ki zaroorat.
Recall Feynman: 12 saal ke bachche ko explain karo
Socho ek bucket hai jo paani hold karta hai, aur tum data padhte ho paani ka level dekh ke. Agar tum sirf poochho "khaali hai ya bhara?" toh tum 1 fact store karte ho — woh SLC hai, aasaan aur reliable. Lekin tum bucket pe lines mark kar sakte ho (khaali, ¼, ½, ¾, bhara) aur exact amounts daalk ke zyada facts store kar sakte ho — woh TLC/QLC hai. Problem: lines bahut paas aa jaati hain, aur paani slosh karta hai aur dheere dheere leak hota hai. Ab yeh batana mushkil ho jaata hai ki "½ line" hai ya "½ se thoda upar." Toh tum zyada store kar sakte ho, lekin zyada reading mistakes karte ho aur bucket saari careful pouring ki wajah se jaldi ghis jaata hai. Yahi poora trade-off hai: zyada storage vs. zyada errors aur kam durability.
Mnemonic Density order yaad rakho
"S ingle M ay T ake Q uality" → SLC, MLC, TLC, QLC = 1,2,3,4 bits. Jaisa tum daayein jaate ho: zyada Quantity, kam Quality (endurance aur speed girti hai).
NAND Flash Architecture — pages, blocks, floating-gate transistor.
Threshold Voltage and ISPP Programming — levels precisely kaise likhe jaate hain.
Error Correction Codes (LDPC/BCH) — MLC/TLC/QLC ke raw errors clean up karta hai.
Wear Leveling and Flash Endurance — limited P/E cycles manage karna.
SLC Cache and SSD Write Amplification — QLC ke liye speed mitigation.
Gray Code — woh encoding jo bit-flip damage minimize karti hai.
holds L levels + L-1 guard bands
reliability and speed fall
Higher density per dollar
Margin shrinks exponentially
Bell-curve smears overlap
Stronger ECC LDPC and retries
SLC over MLC over TLC over QLC tradeoff