5.2.7 · D3 · HinglishProcessor Datapath & Pipelining

Worked examplesLoad-use hazard and stalls

4,082 words19 min read↑ Read in English

5.2.7 · D3 · Hardware › Processor Datapath & Pipelining › Load-use hazard aur stalls

Tumne load-use hazard ko Load-use hazard and stalls mein pehle hi dekha hai. Us parent note ne tumhe ek clean case dikhaya tha: lw phir add, ek stall, khatam. Lekin real world mein zyada messy shapes aate hain — stores, zero registers, dependents ki chains, load ke baad branches. Ye page har distinct case class ko ek-ek karke walk through karta hai, taaki tum koi aisa scenario kabhi na dekho jise tum pehle solve hote nahi dekh chuke.

Kisi bhi example se pehle, chalte hain panch cheezein naam karte hain jo pipeline ke har stage ko define karti hain, taaki koi symbol tumhe surprise na kare. Phir hum stall, bubble, aur exact three-condition test define karenge — jo kuch bhi chahiye sab is page par hai.

Forwarding figure ko is tarah padho: har stage box ek baar draw hai, aur curved arrows dikhate hain kahan ek value MEM/WB latch par janmi (right mein red source) ko teleport kiya ja sakta hai. Red-highlighted WB box woh jagah hai jahan value physically rehti hai; curved arrows us se peelkar EX, MEM, ya ID par land karte hain baad wale instruction ke. Koi arrow waqt mein peeche point nahi karta — har arrow ek aisi stage par land karta hai jo baad wale cycle mein ho rahi hai, yehi poora point hai.

Figure — Load-use hazard and stalls

Timeline figure ko is tarah padho neeche: panch boxes ek single lw ke panch stages hain, cycles 1–5 mein left-to-right rakhe hue. Chaar boxes black hain; sirf MEM box red hai, kyunki MEM wahan hota hai jahan memory read hoti hai. Red arrow us MEM box ke right edge ko point karta hai — woh instant (cycle 4 ka end) jab loaded number pehli baar exist karta hai. Kuch bhi is value ko us edge se pehle read nahi kar sakta. Is "ready at end of MEM" landmark ko yaad kar lo; har example apna need-cycle iske against measure karta hai.

Figure — Load-use hazard and stalls

Scenario matrix

Yeh har case class hai jo yeh topic produce kar sakta hai. Baad ke har example ko us cell se tag kiya gaya hai jise woh fill karta hai.

# Case class Kya ise alag banata hai Stall?
A Load → ALU use (immediate) consumer ko data EX mein chahiye, load ke ek cycle baad 1 stall
B Load → independent instr → use ek gap delay absorb karta hai 0 stalls
C Load → store us value ka consumer ko data MEM mein chahiye, EX se baad 0 stalls
D Load into $zero (degenerate) condition-3 guard: $0 kabhi nahi badlata 0 stalls
E Load → use as base address of another load lwlw address register ke through chain 1 stall
F Load → branch using loaded value branch early resolve hota hai → data aur bhi jaldi chahiye 2 stalls
G Ek load ke baad do dependents ek saath sirf pehla dependent stall trigger karta hai 1 stall
H Word problem: CPI of a real loop bohot saare instructions par limiting/aggregate behaviour
I Exam twist: 4 pairs mein se kaunsa stall karta hai 3-condition test coldly apply karo mixed

Hum A–I sab neeche cover karenge.











Recall Quick self-test

Ek load apni value kis stage ke end mein produce karta hai? ::: MEM Ek store apna data register kis stage mein consume karta hai? ::: MEM Bubble kya hota hai? ::: ek NOP (do-nothing) slot jo stall se insert hota hai, pipe mein neeche slide karta hai $0 mein load karna kabhi stall kyun nahi karta? ::: $0 hardwired to 0 hai, toh koi real value produce nahi hoti (condition 3 fail ho jaati hai) Load jo early-resolved branch feed karta hai, kitne stalls chahiye? ::: 2 Load ke baad do dependents ek saath kitne total stalls cause karte hain? ::: 1 " cycles" mein "" kahan se aata hai? ::: pipeline fill: pehle instruction ko sab 5 stages paas karne ke liye 4 extra cycles chahiye CPI kya hogi agar 30% loads hain aur 40% loads mein immediate use hai? ::: 1.12