5.2.12 · HinglishProcessor Datapath & Pipelining

Precise exceptions in pipelines

2,663 words12 min readRead in English

5.2.12 · Hardware › Processor Datapath & Pipelining

Precise Exception Kya Hai?

Hum kyun parwah karte hain?

  • OS exception handlers ko problem fix karne ke liye predictable state chahiye hoti hai (page fault → disk se page load karo, phir retry karo).
  • Debuggers ko accurate state dikhani hoti hai jab koi breakpoint ya fault ho.
  • Correctness: Precise exceptions ke bina, exception ke baad resume karne par galat results aa sakte hain (kuch instructions half-done, kuch skip ho gayi).

Pipelining Precision Ko Kaise Todta Hai

Ek classic 5-stage pipeline (IF, ID, EX, MEM, WB) mein:

Problem 1: Out-of-order completion

  • Instruction EX mein fault kar sakta hai, lekin instruction abhi bhi MEM/WB mein hai aur usne write back nahi kiya.
  • Instruction already fetch/decode ho chuki hain.

Problem 2: Multiple exceptions

  • Instruction ek TLB miss trigger karta hai (MEM stage mein).
  • Instruction ek illegal opcode trigger karta hai (ID stage mein).
  • Hum kaunsa report karein? Sequential execution mein pehle aata, lekin pipeline ne ki fault time mein pehle detect ki!

Problem 3: Branch mispredictions

  • Humne speculatively branch ke baad instructions fetch kar li hain. Agar branch mispredicted tha aur un speculative instructions mein se koi fault karti hai, toh hum woh exception nahi leni chahiye—woh instructions kabhi execute honi hi nahi chahiye thi!

Precise Exceptions Achieve Karne Ke Mechanisms

1. In-Order Completion with Pipeline Stall

Yeh step kyun? Stalling ensure karta hai ki koi nayi instruction pipeline mein nahi aati jab hum pehle waliyon ke finish hone ka wait kar rahe hain. Flushing speculative ya faulted instructions ko remove karta hai taaki woh state modify na karein.


2. Reorder Buffer (ROB) – Out-of-Order Execution with In-Order Commit

Modern processors performance ke liye out-of-order (OoO) execution use karte hain lekin phir bhi precise exceptions chahiye hoti hain. Reorder Buffer isko solve karta hai.

Yeh step kyun? ROB execution (fast, out-of-order) ko commitment (slow, in-order) se decouple karta hai. Architectural state ek "checkpoint" hai jo tabhi aage badhta hai jab hum sure hoon ki earlier instructions fault nahi kar rahi.


3. Speculative Execution aur Branch Mispredictions

Pipelines speculatively fetch karti hain branches ke baad instructions, yeh jaane bina ki branch liya jayega ya nahi. Agar hum mispredict karein:


Multiple Simultaneous Exceptions

Agar pipeline mein multiple instructions same cycle mein exceptions detect karein, toh hum program order mein earliest wali report karni chahiye (precise exceptions ko sequential semantics chahiye hoti hain).


Common Mistakes


Active Recall Practice

Recall Feynman Explanation (Ek 12-saal ke bacche ko explain karo)

Socho tum ek factory assembly line mein toy cars bana rahe ho. Paanch stations hain: parts uthao, wheels assemble karo, body paint karo, decals lagao, box mein dalo.

Ab, station 3 (paint) par, ek worker ek toy mein cracked body dhoondh leta hai—woh defective hai. Lekin toys already stations 4 aur 5 par ja chuki hain, aur station 2 apni car finish karke station 3 mein bhej chuka hai. Agar tum line abhi rok do, tumhare paas hai:

  • Toys stations 4 aur 5 mein (jinpar kaam nahi hona chahiye tha kyunki cracked wali sab kuch rokna chahiye thi).
  • Cracked toy kahin beech mein hai. Precise exception kuch aise kehne jaisa hai: "Theek hai, cracked wali se pehle wali saari toys line finish karke box ho jaayein. Cracked toy aur uske baad wali saari toys ko finish kiye bina throw away karo. Ab factory aisa lagti hai jaise exactly cracked toy par ruki—clean!"

Is tarah, agar manager (operating system) aaye, toh woh ek clean state dekhe: kuch finished toys, defect point par ek kharaab toy, aur uske baad kuch bhi mess nahi hua.



Connections

  • 5.2.1-Pipelining-basics – Precise exceptions pipeline control mein overhead add karte hain.
  • 5.2.8-Data-hazards-and-forwarding – Hazards exception handling ke saath interact karte hain (ek forwarded value faulting instruction se ho sakti hai).
  • 5.2.11-Branch-prediction – Speculative execution ke liye careful exception management chahiye.
  • 6.3.4-Reorder-buffer-in-superscalar – ROB modern OoO processors mein primary mechanism hai.
  • 7.2.5-Virtual-memory-exceptions – Page faults common precise exceptions hain.
  • 3.4.7-Exception-handling-in-ISA – ISA exception types aur handler entry points define karta hai.

#flashcards/hardware

Precise exception kya hota hai? :: Ek aisa exception jahan faulting instruction se pehle wali saari instructions complete ho chuki hain, faulting instruction aur uske baad wali saari instructions ne architectural state modify nahi ki, aur PC faulting instruction ki taraf point karta hai.

Pipelined processors ko precise exceptions ki zaroorat kyun hai?
Taaki OS exception handler ek clean, sequential-looking machine state dekhe, jo correct recovery, resumption, ya termination allow kare. Debuggers aur correctness bhi isi par depend karte hain.
Pipelining exception precision ke liye do main problems kya create karta hai?
(1) Out-of-order completion (jab baad wali fault kare, earlier instructions done nahi hoti). (2) Multiple exceptions simultaneously detect hoti hain (kaunsi report karein?).
Stall-on-exception strategy kya karta hai?
Pipeline freeze karo, faulting instruction se pehle wali saari instructions WB complete karne do, faulting instruction aur uske baad wali saari flush karo, faulting PC save karo, phir handler par jump karo.
Reorder Buffer (ROB) precise exceptions kaise achieve karta hai?
ROB program order mein (oldest pehle) instructions commit karta hai, chahe woh out-of-order execute hon. Exceptions tabhi li jaati hain jab faulting instruction ROB head tak pahunche, yeh ensure karta hai ki earlier instructions commit ho chuki hain aur baad wali nahi.
Exceptions ke context mein speculative instruction kya hoti hai?
Branch resolve hone se pehle predicted branch ke baad fetch ki gayi instruction. Agar branch mispredict kare, toh instruction galat path par hai aur exception cause nahi karni chahiye.
Agar pipeline mein do instructions same cycle mein exceptions detect karein, toh kaunsi exception report ki jaati hai?
Program order mein older instruction ki exception (earliest sequence number), sequential semantics maintain karne ke liye.
Exception detect hote hi pipeline immediately kyun halt nahi kar sakte?
Kyunki earlier instructions (MEM/WB stages mein) abhi bhi architectural state update karna finish nahi ki hain. Abhi halt karna state inconsistent chhod deta.
Precise exceptions mein EPC register ka kya role hai?
EPC (Exception Program Counter) faulting instruction ka address store karta hai, taaki handler ko exactly pata ho fault kahaan hua aur woh state correctly resume ya inspect kar sake.
ROB instructions execute hote hi commit kyun nahi karta?
Program order aur exception precision maintain karne ke liye. Agar younger instruction kisi older wali se pehle commit kare jo baad mein fault kare, toh younger commit "undo" karna padega (bahut mushkil). In-order commit isse rokta hai.

Concept Map

causes

causes

causes

breaks

breaks

breaks

requires

requires

requires

saved in

achieved by

flushes

allows

needed by

Pipeline execution

Out-of-order completion

Multiple exceptions

Branch misprediction faults

Precise exception guarantee

Instrs before fault complete

Faulting and later appear unexecuted

PC points to faulting instr

EPC register

In-order completion and flush

OS handlers and debuggers