Foundations — Write-allocate vs no-allocate
5.4.7 · D1· Hardware › Memory Hierarchy & Caches › Write-allocate vs no-allocate
Yeh sawaal poochne se pehle, aapko yeh samajhna hoga ki "cache", "block", "miss", aur "write" actually kya hote hain — words mein nahi, pictures mein. Yeh page inhe ek-ek karke bilkul scratch se banata hai. Neeche kuch bhi assume nahi kiya gaya ki aapne parent note dekha hai; har tool ko tab construct kiya gaya hai jab uski zaroorat padi.
0. Stage: CPU, cache, aur memory
Is chapter ki saari cheezein teen boxes ke beech hoti hain. Inhe ek baar draw karte hain aur picture kabhi nahi bhoolte.

Cache ka poora reason: memory slow hai. Agar CPU ko har single byte ke liye RAM tak jaana padta, toh programs bahut slow hote. Cache recently-used data ki copies paas mein rakhta hai.
1. Address — har byte ka "house number"
Memory ke har single byte ka ek unique number hota hai jise address kehte hain. Bas itna hi. Yeh sirf ek label hai taaki CPU bol sake ki kaunsa byte usका matlab hai.
Hexadecimal kyun (woh 0x prefix)?
Aapko 0x28 jaise numbers dikhenge. 0x sirf ek flag hai jo kehta hai "agle digits ko base-16 mein padhna". Yahan yeh isliye matter karta hai kyunki addresses binary mein likhne pe saaf pieces mein split hote hain, aur hex binary likhne ka ek compact tarika hai.
Recall
0x2F ka decimal number kya hai?
0x2F ::: .
2. Block (cache line) — cache data ko chunks mein move karta hai
Yeh is poore topic ka sabse important fact hai. Cache kabhi ek byte at a time nahi move karta. Yeh fixed-size chunks move karta hai jinhein blocks (ya cache lines) kehte hain.

Related vault note hai Cache Line Size — chunk size ek real design knob hai.
Chunks kyun, single bytes kyun nahi?
Do reasons, dono physical:
- RAM se fetch karne ka ek bada fixed cost hota hai. Ek baar "warehouse tak jaane" ki cost pay karne ke baad, 64 neighbouring bytes lana akele 1 se bahut zyada expensive nahi. Toh sab le aao.
- Programs neighbours use karte hain. Agar aapne byte 40 touch kiya, toh bahut jald byte 41 bhi touch karoge. Isse spatial locality kehte hain — space mein paas-paas ka data saath use hota hai.
Koi address kis block mein belong karta hai?
Kisi byte ka block number dhundhne ke liye, aap low bits throw away karte ho jo block ke andar byte pick karte hain. 8-byte block ke saath, address ko 8 se divide karna (yaani 3 se right-shift karna, >> 3 likha jaata hai) block number deta hai.
3. Cache ki shelves: lines, index, aur mapping
Cache mein kuch slots (physical lines) hoti hain. Memory se ek block inme se kisi ek mein land karta hai. Kaunse slot mein jaayega, yeh rule mapping kehlaata hai.

% (modulo) symbol kyun?
Cache mein, maano 4 lines hain lekin memory mein millions of blocks. Kaafi blocks ko ek slot share karna padega. mod 4 har block number ko ki range mein wrap karta hai — remainder batata hai ki 4 slots mein se kaunsa. Exactly yahi "wrap around" ka matlab hai.
4. Valid bit aur Dirty bit — cache ke do sticky notes
Har cache line ke saath do one-bit flags hote hain. Bit sirf ek switch hai jo ya toh 0 hai ya 1.

Dirty bit kyun chahiye: agar cache ko memory ko turant bataye bina changed copy rakhne ki ijazat hai, toh kuch yaad rakhna padega ki "yahan memory stale hai." Woh memo dirty bit hai — aur yeh sirf tab sense karta hai jab changed data actually cache mein ho, jo is baat ki deep wajah hai ki write-back write-allocate force karta hai.
5. Hit aur Miss — kya mila?
Jab CPU kisi address ke liye request karta hai, cache us ek slot ko check karta hai jisme woh address map hota hai.
- Write-allocate: write miss pe, pehle block fetch karo, phir write karo.
- No-allocate: write miss pe, seedha memory mein write karo, cache untouched.
6. Read vs Write, aur "traffic"
7. Decision rule mein use ki gayi probability notation
Parent note ka decision rule contain karta hai. Ise samjhte hain.
Topic ko iski kyun zaroorat hai: sahi policy poori tarah se is ek probability pe depend karti hai. Reuse ka zyada chance → allocate. Kam chance (streaming) → mat karo. Dekho Streaming Stores aur Cache Pollution.
Sab kuch topic mein kaise fit hota hai
Equipment checklist
0x28decimal mein kya equals karta hai ::: .>> 3kisi number ke saath kya karta hai ::: lowest 3 bits kaata hai = 8 se integer-divide karta hai.0x28kis block number mein hai (8-byte blocks) ::: block 5, kyunki .% 4(mod 4) kya compute karta hai ::: 4 se divide karne ke baad remainder — direct-mapped slot index.0x284-line, 8-byte cache mein kis line mein map hota hai ::: line 1, kyunki .- Valid bit aapko kya batata hai ::: whether cache line real data hold karta hai (1) ya empty garbage hai (0).
- Dirty bit aapko kya batata hai ::: whether cached copy change ho chuki hai aur memory ab stale hai.
- Hit aur miss mein kya fark hai ::: hit = block already apne slot mein hai; miss = slow memory tak jaana padega.
- Write miss specifically kya hota hai ::: kisi aisi address pe store karna jiska block currently cache mein nahi hai.
- kya padha jaata hai ::: woh probability ki aap data phir use karoge, given ki aapne abhi ise likha.