5.3.8 · D5 · HinglishAdvanced Microarchitecture
Question bank — 2-bit saturating counter predictors
5.3.8 · D5· Hardware › Advanced Microarchitecture › 2-bit saturating counter predictors
Traps se pehle, ek one-line reminder taaki neeche har symbol earn kiya hua lage:
Recall Chaar states aur unke naam
00=Strongly Not-Taken (SNT), 01=Weakly Not-Taken (WNT), 10=Weakly Taken (WT), 11=Strongly Taken (ST). Prediction = most significant bit (MSB): MSB 1 → predict TAKEN, MSB 0 → predict NOT-TAKEN.
True ya false — justify karo
True ya false: Ek 2-bit counter hamesha 1-bit counter se zyada accurately predict karta hai.
False.
TNTNTN... jaisi alternating pattern ke liye dono predictors ~50% par baithe rehte hain kyunki koi bhi period-2 behaviour track nahi kar sakta; 2-bit sirf biased ya loopy branches par jeetta hai.True ya false: "Saturating" ka matlab hai ki counter 11 se wapas 00 par wrap karta hai extra increment par.
False. Saturating ka matlab hai clipping:
11 + 1 = 11 (rukta hai), kabhi 00 nahi. Wrapping usi hysteresis ko destroy kar deta jo is design ka reason hai.True ya false: Sirf MSB prediction determine karta hai; low bit guess ke liye irrelevant hai.
True guess ke liye (T vs NT), lekin low bit "strength" hai jo hysteresis store karta hai — ye decide karta hai ki ek galat outcome prediction flip karega ya sirf use weaken karega.
True ya false: Saare counters ko 00 (SNT) par initialize karna sabse safe, sabse neutral initialization hai.
False. Real branches ~60–70% taken hoti hain, isliye
00 most cold starts ko mispredict karta hai; commercial designs 10 (Weakly Taken) par init karte hain taaki common case ki taraf warm-start ho sake.True ya false: Ek 2-bit predictor us loop re-entry misprediction ko eliminate kar deta hai jo 1-bit predictors ko plagued karta hai.
True. Loop exit par counter sirf
11→10 drop karta hai (phir bhi TAKEN predict karta hai), isliye agli loop entry correctly predict hoti hai — re-entry miss gayab ho jaati hai.True ya false: 2-bit se 3-bit counters par jaane se roughly utna hi accuracy jump milta hai jitna 1-bit→2-bit ne diya.
False. Returns sharply diminish hote hain; 2-bit ~95% benefit capture karta hai. Extra bits hysteresis add karte hain jo phase changes par adaptation delay karta hai aur storage per entry double kar deta hai.
True ya false: Steady state mein length ka ek well-behaved loop outer program ke har iteration mein exactly ek misprediction karta hai.
False. Steady-state cost ek miss per loop instance hai (unavoidable exit), har iteration par nahi — body iterations sab correct hote hain jab counter
11 par saturate ho jaata hai.True ya false: PC ke low 2 bits drop karna indexing ke waqt information kho deta hai ki kaunsi branch dekh rahe ho.
False aligned instructions ke liye. Wo bits hamesha
00 hote hain (4-byte alignment), isliye koi discriminating information nahi lete; unhe rakhna table space waste karta.Error dhundho
"State ST (11) se, ek single not-taken outcome predictor ko not-taken guess karata hai." — kya galat hai?
Ek not-taken
11→10 (WT) move karta hai, jiska MSB phir bhi 1 hai, isliye wo abhi bhi taken predict karta hai. Guess flip karne ke liye tumhe 01 reach karne ke liye do consecutive not-takens chahiye."Ek 4K-entry bimodal table 4 KB karti hai kyunki har entry ek byte hai." — kya galat hai?
Har entry 2 bits hai, 8 nahi. Cost hai , claim se chaar guna chhoti.
"Do branches ka same index par map karna harmless hai jab tak table badi ho." — kya galat hai?
NT-biased aur T-biased branch ke beech ek bhi collision destructive interference cause karta hai: shared counter thrash karta hai aur dono mispredict karte hain. Badi tables collision ki probability kam karti hain, effect nahi.
"Counter correct prediction par increment hota hai aur galat par decrement hota hai." — kya galat hai?
Updates actual outcome par depend karte hain, correctness par nahi: taken → increment, not-taken → decrement, chahe kuch bhi predict kiya ho.
"Ek 1-bit predictor ek clean loop mein ek baar per instance mispredict karta hai, same worst case jaise 2-bit." — kya galat hai?
1-bit predictor steady-state mein do baar per instance mispredict karta hai (exit use NT par flip karta hai, re-entry use T par wapas flip karta hai). 2-bit sirf single unavoidable exit miss leta hai.
"Kyunki loops usually taken hoti hain, hame 'weak' states skip karni chahiye aur sirf SNT aur ST use karni chahiye." — kya galat hai?
Wo 1-bit predictor mein collapse ho jaata hai. Weak states hi hysteresis buffer hain; unhe hatana har anomaly par ping-ponging wapas la deta hai.
"PC mod 2^k se indexing ke liye hardware divider chahiye." — kya galat hai?
Power of two ka modulo sirf ek bit-slice hai (bitwise AND with ) — koi divider nahi, ek wire cut, hardware mein essentially free.
Why questions
Ek 2-bit counter ek anomaly kyun tolerate karta hai lekin permanent behaviour change nahi?
Ek anomaly counter ko same half ke andar ek step nudge karta hai (jaise
11→10), isliye MSB aur thus prediction survive karta hai; ek genuine, repeated change eventually use 10/01 boundary ke across push kar deta hai."Strongly" states momentum reservoirs ki tarah kyun act karte hain?
Wo extreme cells
00/11 hain; ek confirming outcome jo tumhe wahin rakhta hai kuch cost nahi karta, aur ek single contrary outcome sirf ek "unit" stored momentum spend karta hai bina guess change kiye.Weakly Taken (10) par initialize karna clear best choice ki jagah compromise kyun hai?
Ye common case par bet karta hai (branches taken lean karti hain) ek step flip se door rehte hue, isliye ek genuinely not-taken branch jaldi correct ho jaati hai — warm-start benefit aur over-commitment ke beech balance karta hai.
Alternating pattern TNTN... 2-bit counter ko completely kyun defeat karta hai?
Counter ek majority direction track karta hai, lekin TNTN ka kisi bhi short window mein koi majority nahi hoti; har outcome pichle update ko cancel karta hai, isliye ye middle ke around oscillate karta hai aur har baar galat predict karta hai.
Phase changes par zyada hysteresis (zyada bits) kyun hurt karta hai?
Phase change ka matlab hai branch ka true behaviour genuinely reverse ho gaya hai; deep counters ko middle cross karne ke liye bahut zyada outcomes chahiye (jaise 3-bit ke liye 4), isliye ye transition ke dauran mispredicting karte rehte hain — hysteresis stubbornness ban jaati hai.
Hum counter table ko outcome history ki jagah PC se kyun index karte hain?
Bimodal prediction assume karta hai ki har branch ka apna bias hai apne address par captured; history ke saath correlating ek alag, zyada powerful scheme hai — dekho Two-Level Adaptive Predictors aur Gshare Predictor.
Bimodal predictor CPU ko ye kyun nahi bataata ki branch kahan jaati hai?
Ye sirf direction predict karta hai (T/NT); target address ek alag BTB (Branch Target Buffer) se aata hai. Direction + target milkar pipeline ko Pipeline Hazards se bachne dete hain.
Edge cases
Agar ek branch 100 baar lagataar taken ho toh kya hoga?
Counter
11 tak climb karta hai aur wahin rehta hai (saturation) — koi overflow nahi, koi wrap nahi, prediction strongly taken rehti hai.Ek branch poore program mein exactly ek baar execute hoti hai. 2-bit predictor kitna cost karta hai?
Pure cold-start hai: outcome sirf ek miss ya hit hai jo sirf initialization aur actual direction par depend karta hai; hysteresis kabhi engage nahi hoti kyunki doosri occurrence hi nahi hai.
Do counters, dono abhi 10 (WT) read kar rahe hain. Ek 01 se upar aaya, doosra 11 se neeche aaya. Kya ye aage se identically behave karte hain?
Haan. Counter apne current 2 bits se aage memoryless hai —
10 tak kaise pohunche uski history gayi; dono taken predict karte hain aur dono future outcomes par identically respond karte hain.Ek branch long runs mein alternate karti hai: TTTT...NNNN...TTTT.... 2-bit TNTN ke mukable kaise karta hai?
Bahut achha. Long runs counter ko saturate karne dete hain aur ye sirf har run ki do boundaries par mispredict karta hai, TNTN ke unlike jahaan har step ek boundary hai.
2-bit counter apni prediction change karne se pehle maximum kitne consecutive mispredictions suffer kar sakta hai?
Do. Ek saturated state (
11 ya 00) se MSB boundary cross karne aur guess flip karne ke liye do contrary outcomes lagte hain — isliye prediction adapt hone se pehle maximum do straight misses.Agar ek table entry ek never-taken branch aur ek always-taken branch ke beech share ho jaaye jo alternate calls karti hain, counter kaun si state mein settle karta hai?
Ye kabhi settle nahi karta — taken branch ise upar drive karti hai aur not-taken branch neeche, middle ke around oscillate karta hai aur dono ko aksar mispredict karta hai: classic destructive aliasing.