5.3.8 · D1 · HinglishAdvanced Microarchitecture

Foundations2-bit saturating counter predictors

2,374 words11 min read↑ Read in English

5.3.8 · D1 · Hardware › Advanced Microarchitecture › 2-bit saturating counter predictors

Parent note 2-bit saturating counter predictors padhne se pehle, usmein aane wala har symbol pehle se tumhare dimaag mein ek picture ban chuka hona chahiye. Yeh page har ek ko kuch nahi se banata hai, uss order mein jismein ek doosre par depend karte hain. (Humne upar jaanbujhkar bit aur pipeline words use nahi kiye — inhe neeche, sections 4 aur 2 mein define kiya gaya hai, inhe use karne se pehle.)


1. "Branch" kya hota hai?

Ek branch koi bhi instruction hai jo badal sakti hai ki aage kaun si instruction chalegi. Normally CPU line 1 chalata hai, phir 2, phir 3 — seedha neeche. Branch ek fork hai: "agar koi condition true hai, toh kahin aur jump karo; warna seedhe chalte raho."

Figure — 2-bit saturating counter predictors

Picture: ek road jo split hoti hai. Figure s01 mein fork dekho — green road "Taken" hai (hum loop ke top par jump karte hain), red road "Not-Taken" hai (hum fall through karke exit karte hain). Har branch inhi forks mein se ek hoti hai. Yahi cheez predictors predict karte hain. Wider view ke liye Branch Prediction Fundamentals dekho.

Topic ko isko kyun chahiye: poora counter ek hi yes/no question ka jawab dene ke liye exist karta hai — kaun si road? — usi fork ke liye baar baar.


2. Guessing kyun matter karti hai? Pipeline

Modern CPUs ek instruction finish hone se pehle doosri shuru nahi karte. Yeh ek assembly line ki tarah kaam karte hain — ek pipeline — jismein kai instructions ek saath chal rahi hoti hain, har ek alag stage par.

Fix: road ko guess karo, aur line ko usi road par chalte raho. Agar guess sahi nikla, kuch nahi gaya. Agar galat nikla, toh galat tarike se fetch ki gayi instructions ko throw away karo (ek misprediction penalty) aur restart karo. Pipeline Hazards dekho.

Topic ko isko kyun chahiye: yahi motivation hai. Pipelines ke bina, prediction ka koi matlab nahi hota.


3. Symbols T, N, aur outcome string

Parent note TTTN jaisi cheezein likhta hai aur "iterations 0–9 taken" keh ta hai. Inhe theek se pin down karte hain.

Picture: traffic lights ki ek row, green = , red = , ek sentence ki tarah padho. Ek loop jo 10 baar chalta hai phir exit karta hai produce karta hai — das green phir ek red.

Topic ko isko kyun chahiye: counter ka kaam hai abhi tak ki history dekhna aur agla letter predict karna.


4. Bits, aur ek 2-bit number padhna

Ek bit ek single 0 ya 1 hai — ek light switch, off ya on. Do bits side by side mila ke ek 2-bit number banta hai.

MSB yahan kyun matter karta hai: parent ka prediction rule hai "agar MSB = 1, toh predict Taken". Toh sirf baaya bit guess decide karta hai; daaya bit sirf record karta hai hum kitne sure hain. Yeh soch apne paas rakhna — figure s02 ise visual banata hai.

Topic ko isko kyun chahiye: counter ek 2-bit number hi hai. Note ki ek bhi line padhe bina in chaar patterns ko padhe nahi ja sakta.


5. Ek counter jo upar aur neeche ja sakta hai

Ek counter yahan bas wahi 2-bit number hai, lekin badalne ke rules ke saath.

Figure — 2-bit saturating counter predictors

Picture: chaar notch wala ek slider, figure s02 mein dikhaya gaya hai. Taken slider ko daaye dhakelta hai; Not-Taken baaye dhakelta hai; dono ends par diwaaren ise girne se rokti hain. Do daaye notch "predict Taken" painted hain, do baaye "predict Not-Taken".

Topic ko isko kyun chahiye: "saturating counter" literally topic ka naam hai. Increment, decrement, diwaaren, aur ek defined starting notch — yahi iski poori mechanism hai.


6. Hysteresis — ek word mein "grudge"

Picture: sochna ek heavy door spring par hai. Ek tap se nahi khulti; tumhe push karte rehna padta hai. Strong states ( aur ) woh heavy door hain. (Strongly Taken) se, ek single tumhe sirf tak girata hai — abhi bhi "Taken" side par. Prediction actually flip karne ke liye tumhe do 's ek saath chahiye.

Topic ko isko kyun chahiye: yeh akela word explain karta hai kyun 2 bits 1 bit se behtar hai. Ek 1-bit predictor mein zero hysteresis hai — ek surprise use flip kar deta hai, aur loops ise har pass mein do baar flip karate hain.


7. Program-counter, indexing, aur modulo

Parent note bohot saare counters store karta hai — har branch ke liye ek — ek table mein. Sahi wala dhundhne ke liye yeh branch ka address use karta hai.

Picture: mailboxes ki ek deewar. PC ek lamba naam hai; hum ise shorten karte hain (2 bits drop karo, bits rakho) ek box number tak, aur woh box is branch ka 2-bit counter rakhta hai.

Topic ko isko kyun chahiye: indexing ke bina pure program ke liye sirf ek counter hoga, jo useless hai. BTB (Branch Target Buffer) parallel kaam karta hai kahan taken branch jump karta hai yeh yaad rakhne ka.


8. Charon states ko saath mein rakhna

Ab har piece exist karta hai, toh parent note ke state names finally plain English mein padhte hain:

Figure — 2-bit saturating counter predictors

Figure s03 finished state machine hai: chaar boxes, har ek mein ek -arrow (increment, daaye jao) aur ek -arrow (decrement, baaye jao), ends par walls loop back ke saath. Beech mein dashed line prediction boundary hai — uske daaye Taken guess karte hain, baaye Not-Taken. Parent note jo bhi derive karta hai woh sab inhi arrows par walks hain, cold-start notch se shuru hokar.

Topic ko isko kyun chahiye: yeh diagram hi predictor hai. Poora note sirf loops, nested loops, aur cold starts ke liye inhi arrows par paths trace karna hai.


Prerequisite map

Branch = fork with two outcomes

Pipeline needs a guess to avoid stalls

Outcome string T and N

Bit and the four patterns 00 01 10 11

Counter increment decrement saturate

Hysteresis the grudge

Cold start state weakly taken 10

2-bit saturating counter predictor

PC width n index and mod table lookup


Equipment checklist

Daaya side cover karo aur khud ko test karo. Agar koi line surprise karti hai, uska section upar dobara padho.

Ek branch ke kitne possible outcomes hote hain, aur woh kya hain?
Do — Taken (jump hota hai) aur Not-Taken (fall through).
Ek pipelined CPU ko branch outcomes guess karne ki zaroorat kyun hai?
Kyunki branch ki condition abhi tak pata nahi hoti; wait karna assembly line stall kar deta hai, toh yeh guess karke chalta rehta hai aur penalty sirf tab pay karta hai jab galat ho.
2-bit number 10 ko ordinary binary value ke roop mein padho.
(MSB worth 2 hai 1, LSB worth 1 hai 0).
Kaun sa bit prediction decide karta hai, aur doosra bit kya record karta hai?
MSB (baaya bit) T vs NT decide karta hai; LSB record karta hai prediction kitni strong/sure hai.
11 increment karne par "saturate" ka kya matlab hai?
Yeh 11 par hi rehta hai — yeh clip hota hai, yeh 00 par wrap around nahi karta.
Is page par ek fresh (kabhi na dekha) counter kis state mein shuru hota hai, aur kyun?
Weakly Taken (10) — zyaadatar branches taken hoti hain, toh pehle T guess karna zyada baar sahi hota hai, aur sirf weakly hona ek surprise ko ise wapas kheenchne deta hai.
Hysteresis ko ek sentence mein define karo.
Change ki resistance — counter ko apni prediction flip karne se pehle ek se zyada contrary outcome chahiye hota hai.
PC[n:2] mein kya hai aur slice kya rakhti hai?
PC ki bit-width hai (jaise 32); slice bits 2 se tak rakhti hai — lowest do ke alaawa har bit.
binary terms mein kya hai?
ke sirf lowest bits rakho (baaki drop karo).
Do alag branches ka ek hi table entry mein land karna kya kehlata hai?
Aliasing (destructive interference) — yeh ek counter share karte hain aur uspar fight karte hain.
Charon states left se right naam bolo.
Strongly Not-Taken (00), Weakly Not-Taken (01), Weakly Taken (10), Strongly Taken (11).