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.
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.
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.
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 400-cycle ke kitne freezes hum avoid kar sakte hain?"
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.
"Stride" ko ek picture ki tarah socho — ek ruler jis pe evenly spaced ticks hain:
YE TOPIC KO KYUN CHAHIYE: next-line prefetch ek special case hai stride =1 block (ek box aage). Stride prefetch ek general case hai, usually bytes mein express kiya jaata hai. Parent ka formula addr+stride⋅k bas "yahan se shuru karo, k barabar steps lo stride size ke" hai — jahan addr aur strideek hi unit (bytes) mein ho.
YE TOPIC KO KYUN CHAHIYE: parent D aur k dono next-line aur stride strategies mein use karta hai. Agar tum addr+stride⋅k padhte ho bina yeh jaane ki k sirf 1..D count karta hai, toh formula mysterious lagta hai. Hai nahi — bas "D evenly spaced steps aage lo."
Everything jo parent measure karta hai woh ek fraction hai: 0 aur 1 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 (c=0.6) 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 (a=0.35) 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.
YE TOPIC KO KYUN CHAHIYE: parent ka central formula meff=m(1−c) tabhi samajh aata hai jab tum dekhte ho ki cpehle 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.
Ab hamare paas har piece hai. Formula ko plain words mein padho:
Agar c=0 (prefetcher kuch nahi karta), meff=m. Agar c=1 (har miss khatam karta hai), meff=0. Beech ki har value ek seedhi line hai — koi hidden accuracy factor nahi, kyunki c sirf unhe hi count karta hai jo kaam aaye. Dekho Average Memory Access Time (AMAT) jahan meff fit hota hai.
thit aur tmissthit = cache hit ka time (chhota, ~1 cycle). tmiss = miss ka extra penalty (~100 cycles). AMAT =thit+meff⋅tmiss: hit-probe hamesha pay karte ho, aur sirf survivors penalty pay karte hain.
Recall
Δm (pollution)
Extra misses jo create hote hain jab ek bekaari prefetch ek still-needed block ko evict kar deti hai. Likha jaata hai meff=m(1−c)+Δm. 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.