5.4.17 · HinglishMemory Hierarchy & Caches

Prefetching strategies

2,513 words11 min readRead in English

5.4.17 · Hardware › Memory Hierarchy & Caches


Prefetching exist kyun karta hai?

GOAL kya hai? Ek miss ko hit mein convert karo — block pehle se present ho — ya kam se kam poori miss ko partial miss banao (data "in flight" hota hai jab request aati hai, toh wait kam hota hai).


Do cheezein jo galat ho sakti hain


Strategy 1 — Next-line (sequential) prefetching

Kaam kyun karta hai: programs mein spatial locality hoti hai — arrays, code streams, struct fields contiguous layout mein hote hain. Agar aapne ek cache line ka byte 0 touch kiya, toh bahut zyaada chances hain ki aap jaldi next line bhi touch karoge.

Benefit kaise derive karein. Maano:

  • = baseline miss rate (accesses ka woh fraction jo miss ho jaata hai),
  • = coverage = original misses ka woh fraction jo prefetching se successfully hits mein badal jaata hai (yeh ek number hi correctness aur timeliness dono account karta hai),
  • = hit time, = miss penalty.

Coverage directly batata hai ki kitne fraction misses khatam ho jaate hain. Toh effective miss rate simply hai:

Average memory access time (first principles se: time = hits × hit-cost + misses × miss-cost):


Strategy 2 — Stride prefetching

PC se track kyun karein? Alag load instructions ke alag access patterns hote hain. Table ko instruction address se index karne par "load A[i]" ka stream "load B[j]" se alag ho jaata hai, taaki unke strides ek doosre ko corrupt na karein.

Figure — Prefetching strategies

Strategy 3 — Correlation / pointer prefetching

Kaise/Kyun: irregular data structures phir bhi usi tarah traverse hote hain baar baar (aap usi list pe chalta hai). Miss addresses ki history repeat hoti hai, chahe woh koi formula na ho.


Software vs Hardware prefetching

Software Hardware
Program semantics jaanta hai
Instruction bandwidth kharach karta hai ✅ (haan) ❌ (nahi)
Runtime pe adapt karta hai
Irregular pointers handle karta hai ✅ (manually) sirf correlation prefetchers

Worked Examples


Common Mistakes (Steel-manned)


Feynman

Recall Kisi 12-saal ke bachche ko samjhao

Socho tum ek comic book padh rahe ho. Har page ek-ek karke apne dost se maangne ke bajaay (kitna slow!), tera dost notice karta hai ki tu hamesha agle page pe jaata hai — toh woh page 5 pehle se ready kar leta hai, tab tak jab tu page 4 khatam karta hai. Yeh hai next-line prefetching. Agar tu har baar 3 pages skip karta hai, woh woh gap seekh leta hai (yeh hai stride). Agar teri comic randomly jump karti hai lekin hamesha usi tarah — page 2 phir page 9 phir page 4 — toh woh woh path yaad kar leta hai (yeh hai correlation). Khatre ki baat: agar woh galat guess kare, toh woh woh pages utha leta hai jo tu nahi chaahta aur jo tu chaahta tha unhe drop kar deta hai — ab tu aur slow ho gaya. Toh use zyaadatar sahi guess karna chahiye, aur bilkul sahi time pe.


Active Recall

Prefetching kaun si problem solve karta hai?
CPU speed aur DRAM latency ke beech ka bada gap — miss penalty hide karta hai data ko demand se pehle fetch karke.
Coverage vs accuracy — denominator mein kya fark hai?
Coverage = original misses ka fraction jo eliminate hua; Accuracy = issued prefetches ka fraction jo actually use hua. Alag denominators, alag sawaal.
Prefetching performance worse kyun bana sakta hai?
Inaccurate prefetches bandwidth waste karti hain aur cache pollute karti hain (useful blocks evict karti hain), nayi misses add karti hain (pollution term Δm).
Next-line prefetching kya karta hai aur kaam kyun karta hai?
Block b ko access karne par block b+1 fetch karta hai; spatial locality ki wajah se kaam karta hai (contiguous arrays/code).
Stride prefetcher ko PC (instruction address) se index kyun kiya jaata hai?
Alag load instructions ke access streams ko alag karne ke liye taaki unke strides ek doosre ko corrupt na karein.
Stride prefetching fail kab karta hai, aur uski jagah kya aata hai?
Pointer-chasing/irregular structures pe (koi constant stride nahi); correlation/pointer prefetchers uski jagah aate hain.
Coverage se effective miss rate formula likho.
jahan c=coverage (eliminate ki gayi misses), Δm=pollution.
Prefetch degree D kya hai, aur distance ahead kya hai?
Degree D = har trigger pe fetch ki jaane wali lines ki count; sabse door ki distance ahead = stride·D (bytes mein).
Software vs hardware prefetch: ek-ek advantage.
Software program semantics jaanta hai/irregular access handle karta hai; hardware koi instruction slots consume nahi karta aur runtime pe adapt karta hai.
Ek prefetch use hui lekin phir bhi stall hua — kya galat hua?
Timeliness — woh bahut late pahunchi (data demand karne par abhi bhi in flight tha).

Connections

Concept Map

causes

motivates

improved by

goal

judged by

judged by

judged by

measured over

measured over

low accuracy

example strategy

controlled by

exploits

Slow DRAM miss ~400 cycles

CPU stalls waiting

Prefetching

Demand-fetch cache reactive

Turn miss into hit

Coverage

Accuracy

Timeliness

Original misses

Issued prefetches

Wastes bandwidth and pollutes cache

Next-line prefetch b+1

Prefetch degree D

Spatial locality