Question bank — Pipeline registers and control signals
5.2.4 · D5· Hardware › Processor Datapath & Pipelining › Pipeline registers and control signals
Shuru karne se pehle, teen vocabulary anchors jinpar hum baar baar lean karte hain.
Stage — 5-worker assembly line mein ek worker: Fetch → Decode → Execute → Memory → Write-back (short: IF, ID, EX, MEM, WB).
Pipeline register — woh tray (edge-triggered flip-flops ka ek bank — dekho Clocking and edge-triggered flip-flops) jo do workers ke beech baithti hai, clock edge par sab kuch latch karti hai. "Latch" = "abhi value freeze karo taaki next worker use next cycle mein padhe." Exactly chaar hote hain, har ek ka naam un do stages ke naam par hai jinhe woh straddle karta hai:
| Register | Kis ke beech baitha hai | Picture mein dekho |
|---|---|---|
| IF/ID | Fetch → Decode | pehli tray |
| ID/EX | Decode → Execute | doosri tray |
| EX/MEM | Execute → Memory | teesri tray |
| MEM/WB | Memory → Write-back | chauthi tray |
Control bundle — control unit (ID mein) kai saari 1-bit "sticky notes" produce karta hai (RegWrite, MemRead, ALUSrc, …). Hum inhe group karte hain us stage ke hisaab se jo finally inhe use karta hai, aur har group ko bundle kehte hain:
- EX bundle —
ALUSrc,ALUOp,RegDst(Execute mein use hota hai) - MEM bundle —
MemRead,MemWrite,Branch(Memory mein use hota hai) - WB bundle —
RegWrite,MemtoReg(Write-back mein use hota hai)
Neeche ki picture mein chaaon saari trays hain, aur dikhaya hai ki teen bundles ek ek karke kaise drop hoti hain jab ek instruction right ki taraf badhta hai. Jab bhi koi naam neeche unfamiliar lage to ise refer karo.

True or false — justify
Har pipeline register exactly same set of fields store karta hai.
Write-back stage ke baad ek pipeline register hota hai.
Control signals har stage mein independently generate hote hain us stage ki local logic se.
RegWrite signal usi cycle mein use hota hai jis mein generate hota hai.
Ek pipeline register jo control signal carry karta hai, woh signal consuming stage ke baad drop kar deta hai.
Destination register number sirf Decode stage mein chahiye jahan se instruction se padha jaata hai.
Ek pipeline register ko extra fields se widening karna jo koi baad ka stage nahi padhe, sirf wasteful hai, harmful nahi.
PC+4 ko Fetch stage khatam hone ke baad discard kiya ja sakta hai.
Spot the error
"Stage 5 (WB) opcode inspect karta hai yeh decide karne ke liye ki register file mein likhna hai ya nahi."
RegWrite bit padhta hai iske bajaye."Kyunki EX RegWrite use nahi karta, hum ise EX/MEM par safely drop kar sakte hain."
"Write-back us register mein likhta hai jo abhi IF/ID mein current instruction mein named hai."
"Hum Memory stage mein current instruction ke immediate se branch target recompute karte hain."
"EX/MEM register mein sign-extended immediate carry karna chahiye taaki MEM ise use kar sake."
"Kyunki pipeline mein 5 stages hain, symmetry ke liye 5 pipeline registers chahiye."
"MEM stage ke liye control signals MEM stage mein generate karne chahiye taaki woh fresh rahein."
Why questions
Hum simply opcode ko har stage mein re-decode kyun nahi kar sakte control signals carry karne ki jagah?
Control signals ko EX, MEM, aur WB bundles mein kyun split kiya jaata hai ek lump ki jagah?
Har woh value jo baad ka stage chahiye use kyun latch karna padta hai, chahe current stage use ignore kare?
Forwarding (dekho Forwarding and stalling) apne operands pipeline registers se kyun padhta hai register file se nahi?
ALU ka Zero flag EX/MEM mein kyun latched hota hai?
Control signals ko pipeline registers ke andar rakhne se automatically har instruction ka paperwork apne saath kyun rehta hai?
Edge cases
Ek nop (no-operation) ke liye, travel karte waqt control bundles mein kya hona chahiye?
RegWrite, MemWrite — 0 hone chahiye taaki nop kuch na likhe; bits phir bhi registers mein ride karte hain, bas woh ek "do nothing" instruction carry karte hain.Jab hazard ek stall force karta hai, to ID/EX control field mein kya inject kiya jaata hai?
RegWrite=0, MemWrite=0) taaki stalled slot ek nop ki tarah behave kare aur koi state commit na kare, jabki earlier stages apni values hold karti hain (dekho Pipeline hazards).Jab ek branch mispredicted hoti hai, to IF/ID aur ID/EX mein already existing wrong-path instructions ka kya hona chahiye?
RegWrite/MemWrite kabhi fire na karein aur koi wrong-path state commit na ho (yeh ek control hazard hai, dekho Pipeline hazards).Flush sirf control fields kyun zero karta hai lekin data fields clear karne ki taklif kyun nahi karta?
RegWrite=MemWrite=0 hai, to data fields mein jo bhi garbage baitha hai woh kabhi kahi nahi likha jaata, isliye sirf control bits squash karne zaroori hain.Ek R-type instruction ka koi memory access nahi hota — kya woh phir bhi MEM-bundle signals carry karta hai?
MemRead=MemWrite=0 ke saath; fields har instruction ke liye exist karte hain, aur ek non-memory op unhe omit karne ki jagah simply inactive set karta hai.Ek sw (store) koi register nahi likhta — kya uska dest-reg # field phir bhi latched hota hai?
RegWrite=0 set karta hai, isliye jo bhi number wahan baitha ho woh harmlessly ignore ho jaata hai.Reset ke baad pehle clock edges par, pipeline registers undefined values hold karte hain — yeh sirf ek properly reset design mein safe kyun hai?
RegWrite=MemWrite=0 force kare; aise resettable flops ke bina garbage control bits spurious writes trigger kar sakti hain, isliye real designs control registers ko explicit reset dete hain chahe data fields ka koi reset na ho.Agar do instructions ko same cycle mein same physical pipeline register slot chahiye, to kya galat hua?
Connections
- Parent: Pipeline registers and control signals — woh machinery jinhe yeh traps test karte hain
- Forwarding and stalling — inhi registers se directly operands padhna kyun matter karta hai
- Pipeline hazards — bubbles aur flushes registers mein sirf zeroed control bundles hain
- Control unit design — jahan teen bundles janm leti hain
- Clocking and edge-triggered flip-flops — har tray ke peeche reset aur latching behaviour