Worked examples — WCET (Worst Case Execution Time) analysis
5.5.13 · D3· Coding › Embedded Systems & Real-Time Software › WCET (Worst Case Execution Time) analysis
Yahan sab kuch ek imaginary lekin consistent cost model use karta hai taaki numbers haath se check ho sakein. Model ek baar padhlo:
Scenario matrix
Har WCET puzzle basically inhi cells mein se ek (ya mix) hota hai. Neeche ke examples un cell(s) ke saath tagged hain jo woh cover karte hain, aur milake yeh poora grid fill karte hain.
| Cell | Case class | Kya tricky banata hai | Covered by |
|---|---|---|---|
| C1 | Fixed loop, no branch | Baseline: body cost ko iteration count se multiply karo | Ex 1 |
| C2 | Branch inside loop | Kaun si side longer hai? Worst case har baar long side leta hai | Ex 2 |
| C3 | Zero-iteration loop | Loop jo 0 baar bhi chal sakta hai — boundary condition | Ex 3 |
| C4 | Cache: cold vs warm | Pehla access miss, baaki hit — miss ek baar hota hai, har baar nahi | Ex 4 |
| C5 | Nested loops | Inner count, outer count se multiply hoti hai | Ex 5 |
| C6 | Data-dependent bound + infeasible path | Do branches jo dono ek saath nahi ho sakte → naive sum over-count karta hai | Ex 6 |
| C7 | Interrupt interference | Tumhare apne code ke upar external time add hoti hai | Ex 7 |
| C8 | Word problem / schedulability | WCET number ko pass/fail deadline decision mein convert karo | Ex 8 |
| C9 | Exam twist: average ≠ worst | Measurement-based trap; mean jhooth bolta hai | Ex 9 |
Example 1 — Fixed loop, no branch (cell C1)
Forecast: abhi ek number guess karo. (Hint: test kitni baar chalta hai vs body?)
-
Har block kitni baar chalta hai yeh count karo. Yeh step kyun? WCET = (block ka cost) × (kitni baar execute hota hai). Pehle counts pakki karni hogi.
- Block A: ek baar → 1 execution.
- Block B (test
i < n): yeh har body se pehle ek baar chalta hai aur loop khatam detect karne ke liye ek extra baar.n = 20ke liye yeh executions hai. - Block C (body): exactly
n = 20baar chalta hai.
-
Cost × count multiply karo aur sum karo. Yeh step kyun? Yeh straight loop ka core WCET formula hai jisme koi branch nahi — koi path choice nahi hai, toh longest path hi ek hi path hai.
Verify: Loop-test count sanity-check karo. Ek for loop jo 20 bodies karta hai hamesha apni condition 21 baar evaluate karta hai (aakhri wala fail hota hai aur exit karta hai). Units: cycles + cycles = cycles. ✓ 42 cycles.
Example 2 — Branch inside the loop (cell C2)
Forecast: worst case kaun si branch leta hai — aur kitni baar?
-
Branch ka worst side pick karo. Yeh step kyun? WCET longest route maangta hai. Block D (8) Block E (2) se bada hai. Worst case tab hota hai jab
ifhar ek iteration mein true ho — problem mein kuch bhi isko forbid nahi karta. -
Fixed bound = 10 ke saath executions count karo. Yeh step kyun? Ex 1 jaisi hi counting rule: test baar chalta hai, body 10 baar.
Verify: Best case se compare karo (har baar else): . Worst (102) > best (42), jaisa hona chahiye. ✓ 102 cycles.
Example 3 — Woh loop jo shayad na chale (cell C3)
Forecast: kya n = 0 worst case deta hai, ya best?
-
Kaunsa
ntime maximize karta hai yeh dhundho. Yeh step kyun? Yahannek range hai, fixed number nahi. WCET poori range pe max hota hai. Har iteration cost add karti hai, toh zyada iterations = zyada time → worst case sabse bada allowednhai, jo hai 50. -
Pehle degenerate
n = 0case check karo taaki floor pata ho. Yeh step kyun? Boundary conditions wahan hain jahan bugs chhupte hain. Agarn = 0, loop body kabhi nahi chalta; test ek baar chalta hai (turant fail hota hai). -
Ab worst case,
n = 50. Yeh step kyun? Maximize karne walanloop formula mein daalo: test baar chalta hai, body 50 baar.
Verify: , aur general formula deta hai ✓ aur ✓. mein monotone increasing hai, toh max par hai. ✓ 207 cycles.
Example 4 — Cache: cold miss ek baar, warm hits baad mein (cell C4)
Figure dekho: woh dikhata hai usi array ko 8 baar touch kiya ja raha hai, aur kaise miss sirf har cache line ke pehle touch par lagti hai.

arr[0..7] ke liye cache line mapping. 8 array cells ko left to right boxes ke roop mein draw kiya gaya hai labeled arr[0] … arr[7]. Inhe 4 ke do cache lines mein group kiya gaya hai: cache line 0 arr[0..3] cover karta hai, cache line 1 arr[4..7] cover karta hai (har group ke upar blue double-arrows). Har line ka pehla box — arr[0] aur arr[4] — red hai aur "MISS 10 cyc" mark hai, kyunki ise pehli baar touch karne se slow memory se fetch force hota hai jo poori line le aata hai. Baaki chhe boxes — arr[1..3] aur arr[5..7] — green hain aur "hit 1 cyc" mark hain, kyunki line pehle se resident hai. Yellow summary line reads: 2 misses + 6 hits → 20 + 6 = 26 memory cycles.
Forecast: 8 misses? 2 misses? Kuch beech mein?
-
Memory lines count karo, accesses nahi. Yeh step kyun? Miss poori line cache mein laata hai.
arr[0]miss hota hai aurarr[0..3]ko le aata hai; phirarr[1],arr[2],arr[3]hits hain.arr[4]miss hota hai (nayi line), aurarr[5..7]hit hote hain. Toh misses = distinct lines ki count = .- Misses: 2 accesses × 10 cycles = 20.
- Hits: 6 accesses × 1 cycle = 6.
-
Plain per-iteration work add karo. Yeh step kyun? 2-cycle work saari 8 iterations pe hota hai regardless of cache.
Verify: Do extreme (galat) guesses cross-check karo. "Sab miss" = (bahut zyada pessimistic — ek safe but loose bound). "Sab hit" = (unsafe — cold cache ignore karta hai). Hamara 42 beech mein hai, aur line-based "First-Miss" classification se match karta hai. ✓ 42 cycles.
Example 5 — Nested loops (cell C5)
Forecast: body 4×5 = 20 baar chalta hai — lekin har test kitni baar chalta hai?
-
Body count = bounds ka product. Yeh step kyun? Inner body
outerpasses mein se har ek ke liyeinnerbaar chalta hai. -
Inner test aur inner init counts. Yeh step kyun? Har outer pass mein inner test baar chalta hai, aur inner init ek baar. 4 outer passes hain.
- Inner tests: → 24 cycles.
- Inner inits: → 4 cycles.
-
Outer test aur outer init. Yeh step kyun? Outer test baar chalta hai; outer init ek baar.
- Outer tests: 5 cycles. Outer init: 1 cycle.
-
Sab kuch add karo.
Verify: Body akela 60 hai; loop scaffolding 34 add karta hai. Reasonable — control overhead real work ka ek fraction hai. ✓ 94 cycles.
Example 6 — Data-dependent bound + infeasible path (cell C6)
Yeh woh case hai jahan naive "har baar worst branch" over-count karta hai, kyunki do expensive branches dono ek saath nahi ho sakte.
Forecast: naive answer har if ka biggest branch add karta hai. Kya woh reachable hai?
-
Naive (galat, loose) bound: har
ifka max independently pick karo. Yeh step kyun? Trap expose karne ke liye. Pehlaifmax =slow()= . Doosraifmax =tidy()= . Naive total . -
Infeasible path pakdo. Yeh step kyun?
slow()tab chalta hai jabmode != FAST.tidy()tab chalta hai jabmode == FAST. Yeh contradict karte hain —modeki koi bhi single value dono ko trigger nahi kar sakti. Naive 81 ek impossible route count karta hai. Yahi woh hai jo ILP mein flow constraints forbid karte hain. -
Do real possibilities evaluate karo. Yeh step kyun? Sirf do feasible worlds exist karte hain; bada lo.
mode == FAST: .mode != FAST: .
Verify: True WCET 52 < naive 81. Naive bound safe hai (kabhi reality se neeche nahi) lekin loose hai; infeasible-path constraint ise tighten karta hai. ✓ 52 cycles.
Example 7 — Interrupt interference (cell C7)
Forecast: interrupt ek bounded number of times fire hota hai — kitni baar, aur kya uska time window ko lamba karta hai, aur bhi zyada interrupts ko andar aane deta hai?
-
Cycles ko wall-clock time mein badlo taaki units samajh aayein. Yeh step kyun? "Cycle" ek count hai; deadline ek real time hai. Inhe bridge karta hai clock rate: cycles per second. 2 million cycles per second pe, ek cycle second microseconds (µs) rehti hai, kyunki 1 second = 1,000,000 µs toh µs per cycle. Toh raw code ek 100 µs window occupy karta hai — yahi hai jahan se "100 µs" aata hai; yeh bas 200 cycles hain time mein measure kiye gaye.
-
Base window mein max interrupt arrivals count karo. Yeh step kyun? Interference arrival rate se bounded hoti hai. 200 cycles pe, har 40 cycles mein zyada se zyada ek → arrivals. (⌈ ⌉ brackets ka matlab hai "agli poori number tak round up karo" — fraction of an interrupt nahi ho sakta.)
-
Interference apne WCET mein add karo. Yeh step kyun? Parent ka response-time formula hai . Yahan (tumhara apna code) aur (interrupts).
Verify: Interrupts ke bina, 200 cycles. Interference 150 add karta hai — 75% inflation, yahi wajah hai ki interrupts ko response-time analysis mein ek first-class term mana jaata hai, kabhi ignore nahi kiya jaata. Aur 200 cycles × 0.5 µs/cycle = 100 µs time conversion confirm karta hai. ✓ 350 cycles (100 µs raw code).
Example 8 — Word problem: kya yeh deadline meet karta hai? (cell C8)
Forecast: total worst-case response vs 500 µs — pass ya fail?
-
Har higher-priority task se interference sum karo. Yeh step kyun? Interference across all tasks jo time chura sakte hain. Interferer 1 contribute karta hai µs; interferer 2 contribute karta hai µs.
-
Response time compute karo. Yeh step kyun? Parent ka schedulability formula apply karo : tumhara apna worst-case work plus tumse charaaye gaye har cycle.
-
Response time ko deadline se compare karo. Yeh step kyun? Ek task schedulable hota hai exactly tab jab uska worst-case response uski deadline ke andar fit ho: .
Verify: Slack µs , toh pass hota hai — lekin bahut kum se. Agar WCET estimate 3% bhi loose hoti (lagbhag 15 µs) toh response 500 µs exceed kar jaata aur failure ho jaati. Yeh razor-thin margin exactly yahi reason hai kyun safety-critical systems mein tight WCET matter karta hai: ek zindagi pacemaker ke deadline se pehle fire hone par depend karti hai. ✓ R = 490 µs, PASS, 10 µs slack.
Example 9 — Exam twist: average jhooth bolta hai (cell C9)
Figure measurement histogram ki shape dikhata hai: mean ke paas ek tall cluster aur true worst case tak pahunchti ek lambi patli tail.

Forecast: 250, 580, 612 mein se kis par build karte ho?
-
Mean ko reject karo. Yeh step kyun? Mean (250) woh hai jahan code usually land karta hai. Ek deadline jo 0.1% time miss ho woh bhi ek patient ko maar sakti hai. WCET ko tail bound karna chahiye, toh 250 immediately disqualify ho jaata hai.
-
99.9th percentile bhi reject karo. Yeh step kyun? 580 ko 1000 mein se 1 run exceed karta hai — phir bhi ek aise case mein jo eventually guaranteed miss hoga. Ek safe bound ko har observed value par ya usse upar rehna chahiye, 99.9% par nahi.
-
Observed maximum par build karo, phir pad karo. Yeh step kyun? Humne sirf 10,000 ek near-infinite input space ka test kiya; true worst case shayad humne jo dekha usse zyada ho. Margin untested inputs aur rare cache/pipeline events cover karta hai (Extreme Value Theory is padding ko formalize karta hai).
Verify: — reported bound har measurement par dominate karta hai, jaisa ek safe upper bound ko karna chahiye. ✓ 662 cycles.
Recall
Recall WCET branch costs ka average hota hai. Sahi ya galat?
Galat — yeh har baar longest branch leta hai, kabhi average nahi. (Ex 2)
Recall N body count wala ek
for loop apna test kitni baar evaluate karta hai?
::: N baar har body se pehle plus ek aakhri failing test exit karne ke liye. (Ex 1)
Recall 8 array reads, cache line = 4 elements, cold start — kitni misses hoti hain?
Distinct lines = 8/4 ::: 2 misses; baaki 6 accesses hit hote hain. (Ex 4)
Recall Naive "har if ka max branch" kyun over-count kar sakta hai?
Kuch expensive branches infeasible paths par hain ::: woh ek doosre ko contradict karte hain aur ek hi execution mein sab nahi chal sakte. (Ex 6)
Recall Schedulability test ek line mein?
::: worst-case response = apna WCET + interference, deadline ke andar fit hona chahiye. (Ex 8)
Recall Mean ki jagah observed-max + margin kyun report karte hain?
Mean typical hai, worst nahi ::: ek safe bound ko har observed value ke upar rehna chahiye aur untested inputs ke liye pad karna chahiye. (Ex 9)