4.1.11 · HinglishMemory Technologies

Wear leveling and flash controllers

2,519 words11 min readRead in English

4.1.11 · Hardware › Memory Technologies


Flash ko special handling ki ZAROORAT kyun padti hai?

Teen physical facts har cheez ko drive karte hain is topic mein:

  1. Erase-before-write. Tum ek flash bit ko jagah par 0→1 overwrite nahi kar sakte. Pehle tumhe ek poora block erase karna hoga (saare bits 1 set karo), tab bits ko 0 par program karo.
  2. Asymmetric granularity. Tum pages mein read/write karte ho (e.g. 4 KB) lekin blocks mein erase karte ho (e.g. 256 KB = 64 pages). Erase coarse hai; write fine hai.
  3. Wear finite aur local hai. Har erase cells ko thoda damage karta hai. Jo cells zyada erase hoti hain woh pehle marti hain.

Key trick: ek indirection layer (FTL)

YEH KHARIDTA kya hai: Kyunki OS ka address 100 kisi bhi physical location se decoupled hai, controller azaad hai "logical 100" ki har nayi version ko ek fresh, kam-worn physical page par likhne ke liye.

HOW ek write kaam karta hai (out-of-place writing):

  1. OS kehta hai "logical page 100 likho."
  2. Controller ek free, low-wear physical page chunti hai aur wahan likhti hai.
  3. Controller map update karta hai: LBA 100 → new PPA.
  4. Purani physical page stale (invalid) mark ho jaati hai, baad mein reclaim karne ke liye.

Wear leveling ke do flavours


Garbage collection aur write amplification

Kyunki GC valid data copy karta hai, ek logical write kai physical writes trigger kar sakti hai.

First principles se WAF estimate nikalna

KYUN: Hum predict karna chahte hain ki GC kitna extra writing force karta hai, kyunki yeh endurance khaata hai.

Consider karo GC ek victim block par jo pages ka hai. Maano ek fraction pages abhi valid hain (baaki stale hain). Is block ko reclaim karne ke liye humein:

  • valid pages ko ek fresh block mein copy karna hoga, phir
  • block ko erase karna hoga, hume free pages milenge, jinmein se already copies ke liye consume ho gaye hain.

Toh har GC cycle humein genuinely free pages deta hai jabki internal copy-writes perform karta hai.

Host writes jo free pages consume karte hain = . Total physical writes = host writes + copies = ... lekin extra kaam copies hain:

Yeh step kyun? (algebra) Humne mandatory copies () ko useful host writes () mein jooda, phir useful part se divide kiya. Valid data "free mein saath aa jaata hai" lekin phir bhi endurance burn karta hai — isliye amplification hota hai.

Figure — Wear leveling and flash controllers

Worked examples


Common mistakes (steel-manned)


Recall

Recall Active recall — answers chupaao
  • Kaun sa physical fact "erase-before-write" force karta hai? ⇒ Flash bits programming se 1→0 ja sakte hain, lekin 0→1 ke liye ek poora block erase karna padta hai.
  • FTL kya hai aur kyun exist karta hai? ⇒ Logical se physical addresses ka ek map; yeh unhe decouple karta hai taaki writes wear leveling aur out-of-place writes ke liye freely move kar sakein.
  • WAF ka formula GC se aur har symbol? ⇒ ; = GC victims mein valid-page fraction.
  • Dynamic aur static wear leveling mein difference? ⇒ Dynamic sirf active writes spread karta hai; static cold data bhi relocate karta hai.
  • Over-provisioning WAF kyun reduce karta hai? ⇒ Zyada free space ⇒ GC emptier blocks chunti hai ⇒ chota ⇒ kam amplification.
Recall Feynman: 12-saal ke bacche ko explain karo

Socho ek notebook jahan tum sirf pencil se likh sakte ho, aur har page sirf lagbhag 1000 baar erase ho sakta hai usse pehle ki woh fat jaaye. Agar tum hamesha page 1 erase karke rewrite karte, toh woh fat jaata jabki baaki book bilkul nayi hoti. Ek smart helper (controller) iske bajaaye har nayi cheez ek fresh page par likhta hai aur aage ek tiny index rakhta hai jisme likha hota hai "teri grocery list actually page 57 par hai ab." Jab pages crossed-out kachra se bhar jaate hain, helper achhe notes ko ek clean page par copy karta hai aur messy wale ko erase kar deta hai. Woh teri purani drawings jo tum kabhi nahi badlate ko bhi worn pages par move karta hai taaki fresh wale reuse ho sakein. Iss tarah poori notebook dheere-dheere aur evenly wear out hoti hai, na ki ek page pehle marata hai.


Connections

  • NAND vs NOR Flash — physical cells jo wear out ho rahe hain
  • SLC MLC TLC QLC — cell density P/E cycle budget set karta hai
  • Log-Structured File Systems — same out-of-place idea ek layer upar
  • Garbage Collection — WAF ke peeche reclamation engine
  • Over-provisioning and TRIM — host kaise kam karne mein madad karta hai
  • Bad Block Management and ECC — controller ki doosri survival jobs
  • SSD Architecture — jahan FTL aur controller physically rehte hain

Flash ek page ko jagah par overwrite kyun nahi kar sakta?
Bits 1→0 program ki ja sakti hain, lekin 0→1 jaane ke liye pehle ek poora block erase karna padta hai (erase-before-write).
Flash mein granularity mismatch kya hai?
Tum pages (~4 KB) mein read/write karte ho lekin poore blocks (~64+ pages) mein erase karna padta hai.
Flash Translation Layer (FTL) kya karta hai?
Logical block addresses ko physical page addresses par map karta hai, unhe decouple karta hai taaki data freely relocate ho sake.
Out-of-place writing kya hai?
Har write ek naye free page par jaata hai aur map update hota hai; purani page stale mark ho jaati hai.
Write amplification factor define karo.
WAF = (data physically written to flash) / (data requested by host).
Valid fraction u ke saath garbage collection ke liye WAF derive karo.
Copies = uN, useful host writes = N(1−u); WAF = (N(1−u)+uN)/(N(1−u)) = 1/(1−u).
GC victim blocks fully valid approach karne par (u→1) WAF ka kya hota hai?
WAF → ∞ (GC bahut saara valid data copy karta hai).
Dynamic vs static wear leveling?
Dynamic sirf active/free blocks mein writes spread karta hai; static cold data ko bhi low-wear blocks se relocate karta hai.
Over-provisioning SSD life kyun extend karta hai?
Zyada free space GC ko emptier victim blocks chunne deta hai (kam u), WAF aur endurance consumption reduce hoti hai.
P/E cycle kya hai aur kyun matter karta hai?
Ek block ka program/erase; har erase cells ko degrade karta hai, aur blocks ka finite P/E budget hota hai (~10^3–10^5).
Dynamic-only leveling kyun insufficient hai?
Cold data fresh blocks par parked rehta hai, unhe rotation se starve karta hai toh active blocks tezi se wear hote hain.
Endurance E, WAF, host rate H diye Lifetime formula intuition?
Lifetime ≈ E / (H × WAF); zyada WAF life proportionally kam karta hai.

Concept Map

causes

forces

creates

motivates

spreads writes evenly

maps LBA to PPA

enables

produces

reclaimed by

runs

runs

split into

P/E cycles finite

Cells wear out locally

Erase before write

Out-of-place writing

Page write vs block erase

Stale pages accumulate

Wear leveling

Whole device ages together

Flash Translation Layer

Garbage collection

Flash controller

Dynamic vs static