5.4.12 · D1 · Hardware › Memory Hierarchy & Caches › TLB (translation lookaside buffer)
Ek program kabhi woh language nahi bolta jo tumhare RAM chips samajhte hain — woh fake addresses use karta hai jinhein hardware ko har ek memory touch par translate karke real addresses mein badalna padta hai. Ek TLB (Translation Lookaside Buffer) ek chhoti si notepad hai jo last kuch translations yaad rakhti hai taaki yeh rewriting almost free ho jaye.
Yeh page kuch bhi assume nahi karta aur poori tarah self-contained hai. End tak tum har symbol ke baare mein bol sako ge ki woh kya matlab rakhta hai aur woh kaisa dikhta hai . Hum inhe ek ek karke banate hain, har ek sirf pehle wale ko use karta hai, phir tumhe main TLB (translation lookaside buffer) note par bhejte hain.
Ek byte memory ka sabse chhota chunk hai jise machine individually naam deti hai: 8 bits, 256 possible values mein se ek hold karta hai. Ise ek tiny numbered mailbox ki tarah socho jo ek chhota sa number hold karta hai.
Ek address bas mailbox par likha hua number hai taaki tum keh sako "box #7 ka content do mujhe". Memory inhi numbered boxes ki ek lambi row hai.
Worked example Figure 1 — memory mailboxes ki ek street ke roop mein
Memory mailboxes ki ek street hai, har ek ke neeche ek number painted hai. Jab ek program kehta hai "read address 7", hardware pink-arrowed box #7 tak jaata hai aur jo andar hai woh padhta hai (yahan value 7). Ek box ke neeche likha number hi uska address hai — kuch nahi isse zyada.
Yeh matter kyun karta hai: ek TLB jo bhi karta hai woh ek box-number ko doosre box-number mein badalna hai. Agar memory ko numbered boxes ki tarah picture nahi karte, toh translation ki koi bhi baat samajh nahi aayegi.
Intuition Powers of two har jagah kyun aate hain
Har bit ek yes/no switch hai. n switches se tum 2 n alag patterns bana sakte ho, isliye ek n -bit number 2 n alag boxes ko naam de sakta hai. Memory sizes powers of two hoti hain kyunki addresses bits se bane hote hain.
log 2 kyun aur log 10 kyun nahi?"
Kyun natural lagta hai: hum humans das mein count karte hain.
Fix: hardware twos mein count karta hai — har wire on/off hai. Binary patterns ki count 2 n hai, isliye inverse sawaal base 2 use karta hai. Hum log 2 isliye use karte hain kyunki jo hum count kar rahe hain (bit-patterns) double hokar badhta hai.
Hum log 2 thodi der mein ek page ke andar bits count karne ke liye use karenge — lekin pehle define karna padega ki page kya hai.
Definition Page aur page size
P
Ek page consecutive bytes ka ek fixed-size block hai — maano 4096 (4 KiB) bytes — jise memory management ek unit ki tarah treat karta hai. Hum is fixed size ko ==page size P == kehte hain (bytes mein measure). Single bytes idhar udhar move karne ki jagah, system poore pages move karta hai.
P kyun power of two honi chahiye
Hum chahte hain ki address cleanly "konsa page" aur "page ke andar konsa byte" mein split ho jaye sirf bits cut karke (koi division nahi, koi remainder nahi). Yeh tabhi kaam karta hai jab ek page ke andar bytes ki count, P , poore bits ki worth ho — yaani P = 2 ( koi integer ) . Agar P maano 3000 hoti, toh log 2 3000 ≈ 11.55 hota jo bits ka poora number nahi hai, aur koi clean bit-cut exist nahi karta. Isliye page sizes hamesha powers of two hoti hain , jo log 2 P ko integer banata hai (offset bits ki sankhya).
Offset yeh hai ki ek byte page ke andar kitni door hai : box #0, #1, ... se lekar #( P − 1 ) tak us page ke andar . Yeh "is ek street par house number" hai. Kyunki ek page ke andar P bytes hain aur P power of two hai, inhe naam dene ke liye exactly log 2 P bits chahiye (section 2 se).
Page number batata hai konsa page (konsi street), offset batata hai page ke andar konsa byte (konsa house). Dono milke kisi bhi byte ko naam dete hain.
Worked example Figure 2 — ek address ko page number aur offset mein cut karna
Raw address ek lambi bit-string hai. Hum ek vertical cut (yellow dashed line) banaate hain . Cut ke baayein blue bits = page number; cut ke daayein pink bits = offset. 4 KiB page ke liye cut 12 bits ke baad hoti hai, kyunki log 2 4096 = 12 .
Yeh matter kyun karta hai: ek TLB sirf page number translate karta hai aur offset ko akela chhod deta hai. "Offset translate nahi hota" ka idea, bina address ko "do parts mein cut karo" ki mental picture ke, meaningless hai.
Intuition Fake street aur real street
Program ek fake street ke addresses par rehta hai (virtual). RAM chips ki ek real street hoti hai (physical). Dono ke beech ek referee baitha hai jo, har access ke liye, fake box se real box ki taraf point karta hai jise woh abhi represent karta hai. Woh referee ka kaam translation hai.
Definition Virtual address (VA) aur Virtual Page Number (VPN)
Ek virtual address woh fake box-number hai jo program use karta hai. Ise do mein cut karo (section 3): high part VPN hai (Virtual Page Number, "konsa fake page"), low part offset hai.
Definition Physical address (PA) aur Physical Frame Number (PFN)
Ek physical address DRAM mein real box-number hai. Ek frame real memory mein ek page-sized slot hai, aur PFN (Physical Frame Number) batata hai konsa real slot. Program data ka ek page RAM ke ek frame mein rakha jaata hai.
Worked example Figure 3 — sirf page number translate hota hai
VPN → PFN single arrow hai jo mudta hai (blue); offset seedha nikal jaata hai unchanged (pink), kyunki byte apni position page ke andar maintain karta hai chahe page kisi bhi frame mein ho. Isliye offset kabhi translate nahi hota .
Yeh VPN → PFN mapping Page Table mein store hoti hai, aur poora scheme Virtual Memory hai.
Ek page table ek lookup table hai, DRAM mein rakha, jo har VPN ke liye matching PFN aur kuch status bits store karta hai. Yeh fake pages se real frames ka master map hai.
Catch yeh hai: kyunki map khud DRAM mein rehta hai, ise padhna ek memory access ki cost lagata hai . Toh ek naive translation hai "map padho (1 access), phir data padho (1 access)" — kam se kam double kaam. Modern maps kaafi levels mein split hote hain, isliye ek poori page-table walk ke liye 4 memory reads ho sakte hain apna data touch karne se pehle bhi. Yeh slowness hi woh poori wajah hai jiske liye TLB banana worth it hai.
Definition Valid / permission bits
Har PFN ke saath table chhote flags store karta hai: valid (kya yeh page actually memory mein hai?) aur permissions (kya main ise read / write / execute kar sakta hoon?). Yeh TLB entries mein bhi saath aate hain, taaki ek bura access instantly pakda ja sake.
Agar ek page ka valid bit off hai, ise touch karna ek Page Fault trigger karta hai — OS ko ise disk se fetch karna padega. Yeh ek alag, bahut slower event hai ek mere translation miss se.
≪ log 2 P ek frame number ko byte address mein kyun badalta hai
Ek PFN frames count karta hai: frame 0, frame 1, frame 2, ... Har frame P bytes wide hai. Toh frame number f byte f × P par start hota hai. P = 2 l o g 2 P se multiply karna exactly log 2 P bits ka left-shift hai.
∣ )
OR operator, ∣ likha, do numbers ko bit-by-bit compare karta hai aur har result bit ko 1 set karta hai agar either input mein wahan 1 ho. Jab ek number ke low bits sab-zero hain (ek empty slot) aur doosre ke bits sirf us slot mein hain, toh OR simply doosre ko hole mein drop kar deta hai — yeh section 3 ke concatenation ∥ ka bit-level version hai.
Worked check: PFN 0x0037 ke saath P = 4 KiB, toh k = 12 .
0 x 0037 = 55 decimal mein.
55 ≪ 12 = 55 × 4096 = 225280 = 0x37000. Yeh frame ka base byte address hai, low 12 bits sab zero ke saath (ek empty offset-slot).
Ab offset 0xABC OR karo: kyunki 0x37000 ke low 12 bits mein zeros hain aur 0xABC exactly 12 bits mein fit hota hai, 0x37000 ∣ 0xABC = 0x37ABC . Offset cleanly hole mein slot ho jaata hai.
Intuition Programs khud ko repeat karte hain
Programs apne accesses randomly nahi scatter karte; woh same kuch pages baar baar hammer karte hain (loops, nearby data). Is aadat ko locality of reference kehte hain.
Locality of Reference ki wajah se, sirf last-used thodi VPN → PFN mappings hold karne wali ek notepad zyaatar translations satisfy kar legi. Woh notepad ek cache hai, aur yeh specific wala TLB hai. (General caching idea Cache (memory hierarchy) hai.)
Definition Cache / hit / miss
Ek cache recently-used answers ka ek small fast store hai. Ek hit = answer cache mein tha (fast). Ek miss = wahan nahi tha, toh ek baar slow path pay karo, phir answer yaad karo. Yeh teen words poore TLB flow ko drive karte hain.
Definition EMAT (Effective Memory Access Time)
EMAT woh average time hai jo ek memory access actually leta hai jab fast cache-hits aur occasional slow misses ko mix karo. Yeh woh number hai jo main note TLB ki helpfulness prove karne ke liye use karta hai: fast path ko uske hit rate se weight karo aur slow path ko miss rate se, phir dono add karo. Yeh acronym pocket mein rakho — parent page par poora formula milega.
Definition Context switch
Ek context switch tab hota hai jab CPU ek program chalana band karta hai aur doosra start karta hai. Kyunki har program ki apni fake street hoti hai, program A mein VPN 0x5 ek bilkul alag frame ko point karta hai baniasbet program B ke VPN 0x5 se.
Toh Context Switch ke baad, notepad ki yaad ki hui translations galat program ki ho sakti hain — stale entries. Sirf itna jaanna hai kyun hota hai: do programs same VPNs reuse karte hain different frames ke liye.
split address into page and offset
shift and OR equal place bits
Ise bottom-up padho: sab kuch K = TLB mein funnel hota hai. Agar koi bhi upstream box fuzzy hai, K mein jaane wale arrows toot jaate hain.
Khud test karo — right side cover karo aur zor se jawab do.
Ek byte mein kitne bits hote hain, aur woh kitni values hold kar sakta hai? 8 bits, 256 possible values.
Ek address plain words mein kya hai? Mailbox par painted number — kisi ek storage location ko naam dene ka tarika.
Memory sizes powers of two mein kyun aati hain? Addresses bits se bane hote hain; n bits 2 n locations ko naam dete hain.
log 2 4096 = ? aur yeh kya count karta hai?12; 4096 cheezein naam dene ke liye needed bits ki sankhya, kyunki 2 12 = 4096 .
Page size P power of two kyun honi chahiye? Taaki address, page-number aur offset mein clean bit-cut se split ho jaye, log 2 P ko offset bits ka poora number banata hai.
Symbol ∥ ka kya matlab hai? Concatenation — do bit-groups ko side by side ek number mein chipkao (multiply nahi).
Bitwise OR (∣ ) yahan kya karta hai? Ek bit ko 1 set karta hai agar kisi bhi input mein woh ho; frame ke base address ke empty low bits mein offset drop karne ke liye use hota hai.
Jab address split karte ho, konsa part translate hota hai? Sirf page-number part; offset unchanged nikal jaata hai.
VPN vs PFN ek ek line mein? VPN = konsa pretend (virtual) page; PFN = konsa real (physical) frame.
Baayein k se shift karna 2 k se multiply kyun karta hai? Bits ka har ek baayein slide value double karta hai; k baar karo → 2 k se multiply.
Page table physically kahan rehta hai, aur yeh problem kyun hai? DRAM mein; ise padhna ek full memory access cost karta hai, isliye translation har access ko double kar deta.
Locality of reference kya hai? Programs same kuch pages baar baar touch karte hain, isliye translations cache karna faaydemand hota hai.
EMAT kiska short form hai aur kya measure karta hai? Effective Memory Access Time — fast hits aur slow misses mix karke har access ka average time.
Cache hit vs miss? Hit = answer already stored (fast); miss = stored nahi, ek baar slow path pay karo, phir yaad karo.
Context switch ke baad TLB galat data kyun hold kar sakta hai? Alag programs same VPNs ko alag frames ke liye reuse karte hain, isliye purani entries stale ho jaati hain.