YEH KYUN hota hai: Pipelining ka goal hai multiple instructions ek saath execute karna, lekin hardware resources finite aur aksar shared hote hain. Cost aur complexity kam karne ke liye, designers sirf ek hi instance rakh sakte hain mehenga components ka (memory, multipliers). Jab do stages ko ek hi time par woh component chahiye, toh structural hazard ho jaata hai.
KYA hota hai: Pipeline mein ek stall daalna padta hai (jise bubble ya pipeline interlock bhi kehte hain). Jo instruction aage nahi badh sakti, woh ek ya zyada clock cycles tak resource free hone ka wait karti hai.
PERFORMANCE par ASAR: Har stall ek clock cycle waste karta hai jisme koi naya kaam nahi hota. Agar hazard baar baar aata rahe, toh effective CPI ideal 1.0 se zyada ho jaata hai.
PROBLEM YEH HAI: Classic MIPS mein alag instruction aur data caches hote hain, lekin ek aise system ko socho jisme sirf ek unified memory ho:
Cycle 1: Instruction A, IF (Instruction Fetch) mein hai, memory read kar rahi hai
Cycle 4: Instruction D, MEM (Memory access) mein hai, data read/write kar rahi hai
Agar dono ek saath memory access karne ki koshish karein, toh structural hazard ho jaata hai.
YEH DESIGN KYUN EXIST KARTA HAI: Dual-ported memory (alag instruction aur data ports) mehenga hota hai. Kuch embedded systems cost/power bachane ke liye single-port memory use karte hain. Harvard architecture (alag instruction/data memories) is hazard se bachta hai lekin zyada hardware maangta hai.
YEH FORMULA KYUN?: Har stall ek cycle add karta hai jisme pipeline koi useful kaam nahi karta. Hazards ki frequency instruction mix (kitni baar memory access karte hain, specific units use karte hain) aur pipeline structure (kitne stages conflict kar sakte hain) par depend karti hai.
Scratch se Derivation:
Ideal throughput: Har cycle mein ek instruction complete → CPI = 1.0
Stall insertion: Jab hazard aata hai, ek "bubble" (NOP) insert karo. Jo instruction conflicting stage mein enter karne wali thi, woh ek cycle wait karti hai.
Stalls count karna: Agar p probability hai ki hazard har instruction par aata hai, aur har hazard s cycles cost karta hai, toh:
Average stalls per instruction=p×s
Total CPI:
CPI=1+p×s
Memory hazards ke liye p=fmem aur s=1 ke saath:
CPI=1+fmem
Tum apne dost ke saath video game khel rahe ho, ek single controller pe baari-baari. (Controller processor mein ek "resource" ki tarah hai.)
Structural hazard: Tumhe dono ko controller ki zaroorat hai bilkul ek hi time par buttons press karne ke liye. Kyunki sirf ek controller hai, tumhe se ek ko wait karna padega. Yahi structural hazard hai—jitne log chahein utne controllers (hardware) nahi hain abhi.
Data hazard: Tumhe apni baari lene se pehle dekhna hai ki tumhare dost ne kya kiya (jaise unke move dekhne ka wait karna phir apna move karne ke liye). Yeh tumhare beech order aur information pass hone ke baare mein hai.
Control hazard: Tum dekh rahe ho ki tumhara dost boss ko beat karta hai ya nahi, taaki decide kar sako ki retry karni chahiye ya next level pe jaana chahiye. Yeh decisions ke baare mein hai jo decide karta hai tum aage kya karte ho.
Structural hazards sabse simple hain: bas jab sabko ek saath "cheez" chahiye hoti hai toh enough "cheez" nahi hoti!
| Hazard Type | Cause | Solution |
|-------------|----------|
| Structural | Hardware resource conflict | Resources add karo, stall karo |
| Data | Instruction pichle result par depend karti hai | Forwarding, stall |
| Control | Branch outcome unknown | Prediction, stall |
KEY INSIGHT: Structural hazards only hardware limitations se aate hain, instruction sequence se nahi. Data aur control hazards unlimited hardware ke saath bhi hote hain—yeh dependencies aur decisions ke baare mein hain. Structural hazards enough paison se eliminate ho sakte hain (har resource duplicate karo), lekin data/control hazards algorithm ke liye fundamental hain.
Structural hazard kya hota hai? :: Ek pipeline hazard jo resource conflicts se hota hai jab multiple instructions ko ek hi saath ek hi hardware component chahiye (jaise memory, ALU, register ports).
Basic pipelined processors mein sabse common structural hazard ka cause kya hai?
Single-port unified memory: instruction fetch (IF stage), data access (MEM stage) se conflict karta hai.
Structural hazard CPI ko kaise affect karta hai?
Yeh CPI ko 1.0 se upar le jaata hai stalls insert karke. CPI_actual = CPI_ideal + (frequency of hazard × stall penalty).
Structural hazards ke do main solutions kya hain?
(1) Hardware resources add karo (memory, functional units, ports duplicate karo) conflicts eliminate karne ke liye. (2) Shared resource ka access serialize karne ke liye pipeline stalls insert karo.
Modern high-performance processors mein structural hazards kyun kam hain?
Yeh alag instruction aur data caches (Harvard architecture), multiple functional units, aur multi-ported register files use karte hain, conflicts avoid karne ke liye resources duplicate karte hain.
Structural hazard, data hazard se alag kaise hai?
Structural: hardware resource conflict (enough hardware nahi). Data: instruction dependency (result ka wait). Structural hardware add karke eliminate ho sakta hai; data hazards algorithmic hain.
Ek single structural hazard stall ki performance penalty kya hai?
Har stall mein ek clock cycle. Agar stalls frequent hain (jaise 30% instructions), CPI 1.0 se 1.3 tak badh sakta hai, ~23% performance kho ke.
Ek designer kab structural hazards accept kar sakta hai hardware add karne ki jagah?
Cost/power-sensitive embedded systems mein, ya jab hazard itna rare ho ki performance loss, hardware duplicate karne ki cost ke comparison mein acceptable ho.