5.4.17 · D1 · HinglishMemory Hierarchy & Caches

FoundationsPrefetching strategies

2,278 words10 min read↑ Read in English

5.4.17 · D1 · Hardware › Memory Hierarchy & Caches › Prefetching strategies

Is page pe kuch bhi assume nahi kiya gaya. Parent note padhne se pehle, tumhe us page ke har letter, ratio, aur picture se fluent hona chahiye. Hum har ek cheez ko ground up se build karenge, ek aisi order mein jahan har symbol ko use kiye jaane se pehle samjha jaaye.


0. Har cheez jis stage pe tiki hai: ek cache

Neeche di gayi picture dekho: CPU directly slow memory se baat karna avoid karta hai jab tak ho sake — pehle fast cache mein dekhta hai.

Figure — Prefetching strategies

YE TOPIC KO KYUN CHAHIYE: prefetching ka poora kaam hai misses ko hits mein badalna. Agar tumhare dimaag mein "block", "hit", "miss" ke pictures nahi hain, toh baad ke metrics bekar hain. Yahi ground floor hai — dekho Cache Basics — Blocks and Locality.


1. Cycles mein time measure karna, aur memory itni slow kyun hai

YE TOPIC KO KYUN CHAHIYE: prefetching ki poori motivation yahi hai ki ek stall bahut bada hota hai. Baad ke har formula mein yahi poocha ja raha hai "yeh -cycle ke kitne freezes hum avoid kar sakte hain?"


2. "Tum jald chahoge" ke do prakar — locality

Figure — Prefetching strategies

YE TOPIC KO KYUN CHAHIYE: locality hi wajah hai ki ek guess bilkul safal ho sakta hai. Next-line prefetching spatial locality par jiiti hai; correlation prefetching misses ke repeated (temporal) patterns par jiiti hai. Koi locality nahi → koi predictable future nahi → prefetching pure luck hai. Poori detail Spatial vs Temporal Locality mein hai.


3. Address, block number, aur stride — "kahan" ka arithmetic

"Stride" ko ek picture ki tarah socho — ek ruler jis pe evenly spaced ticks hain:

Figure — Prefetching strategies

YE TOPIC KO KYUN CHAHIYE: next-line prefetch ek special case hai stride block (ek box aage). Stride prefetch ek general case hai, usually bytes mein express kiya jaata hai. Parent ka formula bas "yahan se shuru karo, barabar steps lo stride size ke" hai — jahan aur ek hi unit (bytes) mein ho.


4. Degree aur multiplier — kitna aage daudo

YE TOPIC KO KYUN CHAHIYE: parent aur dono next-line aur stride strategies mein use karta hai. Agar tum padhte ho bina yeh jaane ki sirf count karta hai, toh formula mysterious lagta hai. Hai nahi — bas " evenly spaced steps aage lo."


5. Fractions jo ek prefetcher ko grade karte hain — , ,

Everything jo parent measure karta hai woh ek fraction hai: aur ke beech ek number jiska matlab hai "poore ka yeh hissa."

Neeche ke do pie charts "different wholes" ki baat visually samjhaate hain. Dekho ki har pie ka ek slice kis cheez ka hai: baayaan pie original misses ke set se kati gayi hai — uska green wedge () un misses ka hissa hai jo humne khatam kiye. Daayaan pie ek bilkul alag set se kati gayi hai, wo prefetches jo humne issue kiye — uska green wedge () wo hissa hai jo use hua, aur laal "wasted / pollution" slice woh bandwidth hai jo bekaar gayi. Dono greens comparable numbers nahi hain: wo alag sawaalon ke jawab dete hain kyunki wo alag circles ke slices hain. Isliye tumhe accuracy ko kabhi coverage formula mein multiply nahi karna chahiye.

Figure — Prefetching strategies

YE TOPIC KO KYUN CHAHIYE: parent ka central formula tabhi samajh aata hai jab tum dekhte ho ki pehle se hi "jo misses actually eliminate hue" hain. Related metrics Cache Pollution and Replacement Policies ko feed karte hain (buri accuracy → pollution) aur pure page ki vocabulary hain.


6. Parent se pehle padhna

Ab hamare paas har piece hai. Formula ko plain words mein padho:

Agar (prefetcher kuch nahi karta), . Agar (har miss khatam karta hai), . Beech ki har value ek seedhi line hai — koi hidden accuracy factor nahi, kyunki sirf unhe hi count karta hai jo kaam aaye. Dekho Average Memory Access Time (AMAT) jahan fit hota hai.


7. Symbols jo baad mein milenge (taaki naye na lagein jab milein)

Recall

aur = cache hit ka time (chhota, ~1 cycle). = miss ka extra penalty (~100 cycles). AMAT : hit-probe hamesha pay karte ho, aur sirf survivors penalty pay karte hain.

Recall

(pollution) Extra misses jo create hote hain jab ek bekaari prefetch ek still-needed block ko evict kar deti hai. Likha jaata hai . Isliye ek inaccurate prefetcher cheezein badtar bana sakta hai.

Recall PC aur Reference Prediction Table

PC = program counter = us instruction ka address jo load kar raha hai. Table ko PC se index kiya jaata hai taaki alag loads (A[i] vs B[j]) apni alag stride histories rakkhein aur ek doosre ko corrupt na karein.

Recall MLP aur Out-of-Order

Memory-Level Parallelism (Memory-Level Parallelism (MLP)) = ek saath kaafi memory fetches in-flight hona. Out-of-Order Execution CPU ko stall ke baad bhi kaam karte rehne deta hai — woh useful computation jiske saath prefetch overlap karta hai. Compiler Optimizations — Loop Blocking software cousin hai jo access patterns ko prefetch-friendly banaata hai.


Prerequisite map

Cache blocks hits misses

Prefetching strategies

Cycles and stall cost

Spatial and temporal locality

Address block number stride

Degree D and index k

Fractions m c a

Effective miss rate m_eff

AMAT


Equipment checklist

Test karo khud ko — sirf apna jawab bolne ke baad reveal karo.

Cache block (line) kya hai?
Ek fixed-size chunk (jaise 64 bytes) jise cache ek unit ke roop mein move karta hai — kabhi single byte nahi.
Hit vs miss?
Hit = data fast cache mein already hai. Miss = slow memory tak jaana padta hai aur stall karna padta hai.
Ek typical DRAM miss mein kitne CPU cycles lagte hain?
Lagbhag cycles (~ ns at GHz).
Spatial aur temporal locality mein kya fark hai?
Spatial = tum jald nearby addresses ko touch karoge; temporal = tum usi address ko dobara jald touch karoge.
Do addresses se stride kaise compute karte hain?
Baad wala address minus pehla address (number line pe gap).
Stride do units mein count ho sakta hai — kaun se?
Bytes (jaise B) ya blocks (poore boxes aage); "stride = 1 block" matlab ek box, yaani ek byte-stride jo block size ke barabar ho.
Prefetch degree kya count karta hai, aur kya measure karta hai?
= fetch hone wali lines ki sankhya (ek count); = bytes mein kitna aage tak sabse dur wala prefetch pahunchta hai (ek length).
mein ke liye kaun si values hain?
— yeh bas prefetched lines mein se har ek ko naam deta hai.
Coverage — numerator aur denominator?
(Jo misses hits mein badal gaye) ÷ (original misses).
Accuracy — numerator aur denominator?
(Jo prefetches actually use hue) ÷ (prefetches issued).
Accuracy ko mein multiply kyun nahi kar sakte?
Kyunki pehle se sirf wahi misses count karta hai jo truly eliminate hue — accuracy ek alag bandwidth metric hai ek alag denominator ke upar.
ko words mein padho.
Original misses ka wo fraction jo survive karta hai (abhi bhi miss hai).
kya hai?
Extra misses jo pollution se create hote hain jab ek bekaari prefetch ek still-needed block ko evict kar deti hai.