Visual walkthrough — Flynn's taxonomy (SISD - SIMD - MIMD)
6.1.1 · D2· Hardware › Parallelism & Multicore › Flynn's taxonomy (SISD - SIMD - MIMD)
Koi bhi letter aane se pehle, ek picture par agree karo: time ek horizontal bar hai. Lamba bar matlab program zyada time leta hai. Kaam ko cores mein split karna matlab bar ke pieces ko end-to-end ki jagah side-by-side stack karna taaki woh sath mein finish ho jayein. Bas yeh ek idea hi baaki sab kuch drive karta hai.
Step 1 — Poore kaam ko ek time ke bar ki tarah draw karo
KYA. Hum ek program ek core (ek worker) par chalate hain. Jo bhi time lagta hai, hum use kehte hain. Letter sirf "single-core run kitna lamba chalta hai" yeh name karta hai — kuch nahi.
KYUN. Humein ek fixed reference chahiye. Har speedup isi ek honest run ke against measure hoti hai. Agar hum pin nahi karte, toh "twice as fast" ka koi matlab nahi.
PICTURE. Ek solid bar. Uski puri length hi hai. Time left → right flow karta hai.

Step 2 — Saara kaam share nahi ho sakta: bar ko do mein split karo
KYA. Kaam ke andar dekho. Kuch kaam zaroor order mein hona chahiye — ek config file padhna, setup karna, final answer print karna. Total ka jo fraction order mein stuck hai use serial part kehte hain. Baaki — independent data par loops, jaise parent note ke SIMD-style array adds — parallelizable part hai. Hum parallel fraction ko name karte hain.
KYUN. "Fraction" bas "bar ka kaunsa slice" hai. Agar hai, toh bar ka teen-chauthai hissa cores mein spread ho sakta hai aur ek-chauthai nahi ho sakta. Yeh split hi ek aur ek cheez hai jo answer decide karegi, isliye hum ise pehle visible karte hain.
PICTURE. Wahi bar, ab do colours mein painted: length ka amber serial chunk aur length ka cyan parallel chunk.

Step 3 — Parallel part ko cores ko do
KYA. = cores (workers) ki sankhya introduce karo. Hum sirf cyan parallel chunk lete hain aur use equal slices mein kaat lete hain, phir un slices ko ek saath, ek ke upar ek stack karke chalate hain. Serial amber chunk unchanged rehta hai — woh abhi bhi ek core par akela chalta hai.
KYUN. Yahi ek MIMD machine ka poora promise hai: independent kaam simultaneously hota hai. Independent slices time mein overlap ho sakti hain, isliye side-by-side rakhne par unka finish time bas ek slice ki length hoti hai. Cyan chunk ki ek slice tak chalti hai: cores mein divide kiya gaya parallel time .
PICTURE. Cyan chunk chote bars mein fan out hota hai jo vertically stack hain (woh sath chalte hain). Amber chunk unke aage puri length mein rehta hai.

Step 4 — Naya, chota bar wapas banao
KYA. Naya total run time — ise kehte hain — wahi hai jo end-to-end bachta hai: serial chunk jo kabhi nahi sika plus squeezed parallel chunk.
KYUN. Cores ne parallel kaam overlap kiya, lekin kuch bhi serial kaam overlap nahi kar sakta tha — ek akele worker ko abhi bhi use grind karna tha. Isliye hum baaki do lengths ko wapas ek bar mein glue karte hain.
PICTURE. Ek chota bar: puri amber serial piece, phir width ka ek patla cyan stub.

Step 5 — "Chota bar" ko "kitna faster" mein badlo: divide karo
KYA. Speedup ek ratio question poochta hai: "naya bar purane bar se kitne guna chota hai?" Isliye hum old time ko new time se divide karte hain.
KYUN. Hum division use karte hain subtraction nahi kyunki "twice as fast" ek ratio hai (bar aadha lambe = 2×), seconds mein difference nahi. Ratio wahi hai jiska matlab log "speedup" se lete hain.
Har term mein ka factor hai. Woh common cancel ho jaata hai — speedup ko parwah nahi ki program kitna lamba hai, sirf yeh ki woh kaise split hai. Top aur bottom dono ko se divide karo:

Step 6 — Degenerate cases (check karo ki formula kabhi jhooth nahi bolta)
Humein dikhana hoga ki formula har extreme par sahi behave karta hai, taaki koi bhi reader aise scenario se na takraye jise hum skip kar gaye.
Case A — ek core, . Plug in karo: . Ek core exactly wahi speed deta hai jisse hum shuru hue. Accha — kuch nahi karne se koi free lunch nahi.
Case B — kuch bhi parallel nahi, . Toh kisi bhi ke liye . Ek purely serial program har extra core ko ignore karta hai. Bar sab amber hai; zero cyan ko slice karna kuch nahi badalta.
Case C — sab kuch parallel, . Toh . Perfect linear speedup — yahi parent note ka ideal SIMD case hai, jahan lanes sach mein dete hain.
PICTURE. Teen bars side by side jo yeh limits dikhate hain.

Step 7 — Wall: jaane do
KYA. Cores ki sankhya ko infinity ki taraf push karo. mein, jaise badhta hai pura term ki taraf slide karta hai (ek bade number se divide karna). Kya bachta hai?
KYUN. Yeh headline question ka answer deta hai: speedup ke liye paisa kitna zyada khareed sakta hai? Zyada cores sirf term par attack karte hain; woh kabhi ko touch nahi kar sakte.
PICTURE. Jaise cores badhte hain, cyan stub gayab ho jaata hai lekin amber serial block rehta hai — bar ek floor par flatten hoti hai, aur speedup curve height ki ceiling mein bend ho jaata hai.

Ek picture ka summary

Yeh ek figure sab kuch tie karta hai: original bar serial (amber) + parallel (cyan) mein split hoti hai; cores sirf cyan ko squeeze karte hain; serial amber ek hard floor set karta hai; aur speedup curve fast rise karti hai, phir ceiling mein bend ho jaati hai.
Recall Feynman retelling — ise ek story ki tarah bolo
Socho ek fence paint karna hai. Kuch kaam — paint kharidna, tin kholna, clean up karna — tumhe akele, order mein karna hai. Yeh amber part hai; doston ki koi madad nahi ho sakti. Baaki — actual planks brush karna — tum helpers mein split kar sakte ho; yeh cyan part hai. Ek dost lao, dus, hazaar: brushing faster aur faster hoti jaati hai, lekin buying-and-cleanup ka time kabhi nahi badlta. Isliye poora kaam us lonely amber kaam se zyada fast kabhi nahi ho sakta. Amdahl's Law bas us fence ka arithmetic hai: original time ko (stubborn serial slice + parallel slice pieces mein kata hua) se divide karo, aur chahe kitne bhi dost aa jayein, tum one-over-the-serial-fraction ki ceiling se takrate ho.
Recall Quick self-test
ke saath, cores infinity tak jaane par speedup ceiling kya hai? ::: . Amdahl's Law mein kaunsa term hai jisme nahi hai, aur yeh kyun matter karta hai? ::: Serial term ; yeh zyada cores ke saath kabhi nahi shrinkta, isliye yeh hard limit set karta hai. Speedup paane ke liye old time ko new time se subtract kyun nahi karte, divide karte hain? ::: Speedup ek ratio hai ("aadha lamba = 2×"), seconds mein difference nahi.
Parent par wapas jao: Flynn's taxonomy (SISD · SIMD · MIMD).